* [一、可读性的重要性](#一可读性的重要性) * [二、用名字表达代码含义](#二用名字表达代码含义) * [三、名字不能带来歧义](#三名字不能带来歧义) * [四、良好的代码风格](#四良好的代码风格) * [五、编写注释](#五编写注释) * [六、如何编写注释](#六如何编写注释) * [七、提高控制流的可读性](#七提高控制流的可读性) * [八、拆分长表达式](#八拆分长表达式) * [九、变量与可读性](#九变量与可读性) * [十、抽取函数](#十抽取函数) * [十一、一次只做一件事](#十一一次只做一件事) * [十二、用自然语言表述代码](#十二用自然语言表述代码) * [十三、减少代码量](#十三减少代码量) # 一、可读性的重要性 编程有很大一部分时间是在阅读代码,不仅要阅读自己的代码,而且要阅读别人的代码。因此,可读性良好的代码能够大大提高编程效率。 可读性良好的代码往往会让代码架构更好,因为程序员更愿意去修改这部分代码,而且也更容易修改。 只有在核心领域为了效率才可以放弃可读性,否则可读性是第一位。 # 二、用名字表达代码含义 一些比较有表达力的单词: | 单词 | 可替代单词 | | --- | --- | | 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 | 使用 i、j、k 作为循环迭代器的名字过于简单,user_i、member_i 这种名字会更有表达力。因为循环层次越多,代码越难理解,有表达力的迭代器名字可读性会更高 为名字添加形容词等信息能让名字更具有表达力,但是名字也会变长。名字长短的准则是:作用域越大,名字越长。因此只有在短作用域才能使用一些简单名字。 # 三、名字不能带来歧义 起完名字要思考一下别人会对这个名字有何解读,会不会误解了原本想表达的含义。 用 min、max 表示数量范围;用 first、last 表示访问空间的包含范围,begin、end 表示访问空间的排除范围,即 end 不包含尾部。