* [可读性的重要性](#可读性的重要性) * [用名字表达代码含义](#用名字表达代码含义) * [名字不能带来歧义](#名字不能带来歧义) * [良好的代码风格](#良好的代码风格) * [编写注释](#编写注释) * [如何编写注释](#如何编写注释) * [提高控制流的可读性](#提高控制流的可读性) * [拆分长表达式](#拆分长表达式) * [变量与可读性](#变量与可读性) * [抽取函数](#抽取函数) * [一次只做一件事](#一次只做一件事) * [用自然语言表述代码](#用自然语言表述代码) * [减少代码量](#减少代码量) # 可读性的重要性 编程有很大一部分时间是在阅读代码,不仅要阅读自己的代码,而且要阅读别人的代码。因此,可读性良好的代码能够大大提高编程效率。 可读性良好的代码往往会让代码架构更好,因为程序员更愿意去修改这部分代码,而且也更容易修改。 只有在核心领域为了效率才可以放弃可读性,否则可读性是第一位。 # 用名字表达代码含义 一些比较有表达力的单词: | 单词 | 可替代单词 | | --- | --- | | 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 不包含尾部。