笔记 编写可读性代码的艺术
阅读原文
1. 代码应当易于理解
- 唯一标准:
让别人理解的时间最小
2. 把信息装到名字里
- 选择专业的词
- 避免泛泛的名字
- 使用具体的名字代替抽象的名字
- 为名字携带更多的信息
- 名字的作用域越大,最好名字越长
- 丢掉没用的词
单词 | 更多选择 |
---|---|
send | deliver, dispatch, announce, distribute,route |
find | search, extract, locate, recover |
start | launch, create, begin, open |
make | create, set up, build, generate, compose, add ,new |
3. 审美
我之前学设计的时候看过一本书,写给大家看的设计书(第3版)将这本书中的设计审美原理应用到写代码上,真实十分贴切,如果你读过此书,你的审美能力会大幅提高。
- 对齐
- 重复
- 对比
- 亲密性 按照亲密关系分段
- 顺序
4. 写什么样的注释
- 不要写一眼就能看懂的注释,类似于此地无银三百两
- 与其写注释,不如把变量名函数名写好,可以从名字中理解
- 记录你的思想
- 加入评论
- 指出哪里有陷阱,需要注意
- 言简意赅,不要啰嗦
不要使用不明确的代词,不要像像算命先生说话,如何解释都对
5. 可读性控制流
追求最小理解时间
,而不是最少代码行- 尽可能提前return结果
- 少点嵌套,要尽可能扁平化
- 理解执行流程。有些是连续执行。有些是随时都可能执行,像事件回调
- 避免使用while, 一般我们循环都是为了遍历数组,为什么不用forEach呢?
6. 拆分超长表达式
- 拆分超长的表达式
- 拆分巨大的语句
- 尽量把逻辑包裹在函数中,不要重复你自己 DRY
7. 变量与可读性
- 减少变量,变量越少越好
- 减少中间结果,垂直消费
- 减少用于控制流的变量
- 缩小变量的作用域
- 用到变量再定义,不要提前定义,不然还要随时想着,之前定义的变量是用干嘛的呢?
8. 重构
- 抽取不相关的自子问题
- 抽取各种配置性的变量在一起,他们都是配置
- 尽量写纯函数
- 创建大量通用代码
- 打造自己的武器装备库
- 简化接口传参
- 过犹不及,不要太苛刻
9. 一次只做一件事
10. 少写代码
最好的代码就是没有代码
- 别费神实现那个功能,你不会需要的
- 质疑和拆分的需求
- 保持小代码库
- 删除没用的代码
- 删除没有的注释
11. 调试
- 尽可能将错误打印出来,不要隐藏
笔记 编写可读性代码的艺术相关推荐
- 编写可阅读代码的艺术 培训实践 第一部分 表面层次的改进
java 1.6 帮助文档 中文链接:http://download.csdn.net/detail/qw599186875/9608735 Java1.8 帮助文档 中文 – 谷歌版 在线版: ht ...
- O’Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等
O'Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等 A first Course in Logic An Introduction To Model Theory Proof ...
- 《修改代码的艺术》读书笔记一
一.修改软件的起因及其本质. 修改软件是任何一个开发人员所面对的问题,软件是否容易修改,被修改后的软件是否变得更好,是每一个开发人员都知道必须关注但是在实际开发过程中却往往忽视的问题.有多少人在接手一 ...
- 晒书有礼!《编写可读代码的艺术》(The Art of Readable Code)晒书有礼活动进行中
值得所有程序员收藏的好书<编写可读代码的艺术>热卖! 为答谢各位读者的关注和支持,华章公司特举办该书的"晒书有礼"活动! 活动时间:2012年7月23日~2012年8月 ...
- 晒书有礼!《编写可读代码的艺术》(The Art of Readable Code)晒书有礼活动进行中...
值得所有程序员收藏的好书<编写可读代码的艺术>热卖! 为答谢各位读者的关注和支持,华章公司特举办该书的"晒书有礼"活动! 活动时间:2012年7月23日~2012年8月 ...
- 编写优质代码的 6 大关键方法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习实验室 [译者注]作为一名开发者,编写一手干净的 ...
- 如何优雅的编写 JavaScript 代码
几乎每个大一点公司都有一个"运行时间长,维护的工程师换了一批又一批"的项目,如果参与到这样的项目中来,大部分人只有一个感觉--"climb the shit mounta ...
- 编写好代码的10条戒律
编写好代码的10条戒律 1.DRY:不要重复你自己(Don't repeat yourself) DRY是一条最容易理解但又是相对比较难以应用的原则.它是指当你在两处或者更多的地方发现相似代码时,我们 ...
- Django模板(编写html代码
1.模板 用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器 模版致力于表达外观,一个视图可以使用任意一个模板,一个 ...
最新文章
- 【RocketMQ工作原理】offset管理
- JMeter学习(七)聚合报告之 90% Line 正确理解
- redis 失效时间单位是秒还是毫秒_【redis中键的生存时间(expire) 】
- 2018-2019 ICPC Northwestern European Regional Programming Contest (NWERC 2018)
- HashMap, LinkedHashMap 和 TreeMap的区别
- 蜂鸟笔记本swift接口_蜂鸟Swift 5可清新文艺、又可尊贵典雅
- 好产品改变世界——《人人都是产品经理》即将上市
- 各种流行编程语言的优缺点
- 数据结构与算法 —— 链表linked list(05)
- JQuery使用deferreds串行多个ajax请求
- C++之---友元函数
- plsql 排序_在PLSQL中怎么能取到表中按ID降序排列的前十条记录???
- 用Python剪辑视频?太简单了
- List集合去重的几种方法
- 游戏英文词汇700+
- GPG生成密钥对(Windows)及应用
- 便携式航电实时系统测试平台工作台设计
- MATLAB深度学习之LSTM
- UBTC主网4月份升级啦
- 【Fluent Meshing】03 多段翼面重构流程操作
热门文章
- 微信小程token_微信小程序url与token设置详解
- c语言程序员算法题库,100个超级经典地C语言算法,程序员必须练习.doc
- linux中脚本引入计算bc,linux BC命令行计算器
- 楼盘管理系统_教育信息化2.0,2019年校园智慧后勤管理系统五大品牌
- 大数据 挑战 机会_大数据可视化面临哪些挑战
- linux ls命令无法执行,更新了个依赖程序,结果悲剧了,连ls命令都不能用,大神帮帮忙!...
- pytorch torchvision.transforms.CenterCrop
- pytorch torchvision.transform.Compose
- c语言 原码反码和补码
- 数据可视化之单属性(字段)