编写可读代码的艺术 -- 读书笔记

原创
2013/05/16 15:21
阅读数 308

第1章   代码应当易于理解
    关键代码, 应当易于理解.
    可读性基本原理: 代码的写法应当使别人理解它所需的时间最小化.
    代码不是越小越好.
    选择好的名字, 写好的注释, 把代码整洁地写成更好的格式.

第2章   把信息装到名字里
    选择专业的词.
    找到更有表现力的词.
    避免像tmp和retval这样泛泛的名字.
    有些情况下泛泛的名字也承载着意义. tmp这个名字只应用于短期存在且临时性为期主要存在因素的变量.
    如果你要使用像tmp, it或者retval这样泛泛的名字, 那么你要有个好理由.
    用具体的名字代替抽象的名字.
    为名字附带更多信息.
    如果你的变量是一个度量的话, 那么最好把名字带上它的单位.
    附带其他重要属性.
    在小的作用域里可以使用短的名字.
    为作用域大的名字采用更长的名字.

第3章   不会误解的名字
    多问自己几遍: "这个名字会被别人解读成其他的含义吗?" 要仔细审视这个名字.
    推荐用min和max来表示包含(极限).
    推荐用first和last来表示包含的范围.
    推荐用begin和end来表示包含/排除范围.
    通常来讲, 加上像is,has,can或should这样的词, 可以把布尔值变得更明确.
    与使用者的期望像匹配. 用户会期望get()或者size()是轻量的方法.
   
第4章   审美
    使用一致的布局, 让读者很快就习惯这种风格, 让相似的代码看上去相似, 把相关的代码进行分组, 形成代码块.
    使用从审美角度讲让人愉悦的代码更容易.
    用方法来整理不规则的东西.
    在需要时使用列对齐.(必须有一个很好的理由)
    选择一个有意义的顺序, 始终一致地使用它.
    用空行来把大块代码分成逻辑上的"段落".
    一致的风格比"正确"的风格更重要.

第5章   该写什么样的注释
    注释的目的是尽量帮助读者了解得和作者一样多.
    当你写代码时, 你的脑海里会有很多有价值的信息, 当其他人读你的代码时, 这些信息已经丢失了--他们所见到的只是眼前的代码.
    不要为那些从代码本身就能快速推断的事实写注释.
    不要为了注释而写注释.
    不要给不好的名字加注释--应该把名字改好.
    记录你的思想.
    加入"导演评论".
    为代码中的瑕疵也注释.
    给常量加注释.
    想象你的代码对应外人来讲看起来是什么样子的.
    公布可能的陷阱.

第6章   写出言简意赅的注释
    注释应当有很高的信息/空间率.
    让注释保持紧凑.
    避免使用不明确的代词.
    润色粗糙的句子.
    精确地描述函数的行为.
    用输入/输出列子来说明特别的情况.
    声明代码的意图.
    采用信息含量高的词.

第7章   把控制流变得易读
    把条件,循环以及其他对控制流的改变做得越"自然"越好. 运用一种方式使读者不用停下来重读你的代码.
    首先处理正逻辑而不是负逻辑的情况.
    先处理掉简单的情况.
    先处理有趣或者是可疑的情况.
    相对于追求最小化代码行数, 一个更好的度量方法是最小化人们理解它所需的时间.
    建议: 默认情况下都用if/else, 三目运算符只有在最简单的情况下使用.
    避免do/while循环.
    有些程序员认为函数中永远不应该出现多条return语句, 这是胡说八道.
    最小化嵌套.
    当你对代码做改动时, 从全新的角度审视它, 把它作为一个整体来看待.
    通过提早返回来减少嵌套.

第8章   拆分超长的表达式
    把你的超长表达式分成更容易理解的小块.
    拆分表达式最简单的方法就是引入一个额外的变量, 让它来表示一个小一点的子表达式.
    即使一个表达式不需要解释, 把它装入一个新变量中仍然有用. 我们把它叫做总结变量, 它的目的只是用一个短很多的名字来代替一大块代码.
    使用德摩根定理.
    要小心"智能"的小代码段--它们往往以后会让别人读起来感到困惑.

第9章   变量与可读性
    减少变量.
    去掉没有价值的临时变量.
    减少控制流变量.
    缩小变量的作用域.
    把定义向下移.
    操作一个变量的地方越多, 越难确定它的当前值.

第10章  抽取不相关的子问题.
    创建大量通用代码.
    简化已有接口.
    你永远都不要安于使用不理想的接口.
    过犹不及.

第11章  一次只做一件事

第12章  把想法变成代码
    如果你不能把一件事解释给你祖母听的话说明你还没有真正理解它.
    用自然语言描述解决方案.

第13章  少写代码
    最好读的代码就是没有代码.
    别费神实现那个功能--你不会需要它.
    保持小代码库.
    删除没用的代码.
    每隔一段时间, 花15分钟阅读标准库中所有函数/模块/类型的名字.

第14章  测试与可读性
    测试应当具有可读性, 以便其他程序员可以舒服地改变或者增加测试.
    对使用者隐去不重要的细节, 以便更重要的细节会更突出.
    让错误消息具有可读性.
    选择好的测试输入.

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部