可读性基本定理,代码的写法应当使别人理解他所需要的时间最小化

##表面层次的改进 ####变量的名字 变量的名字是最能表现程序想法和思路的代码了。如果变量都有一个合适的名字,对代码理解来说,是最大的助力。

  • 选择专业的避免歧义的词汇。

  • 使用更确切更具体的词汇。
    EX –
    send: deliver, dispatch, announce, distribute, route.
    find: search, extract, locate, recover.
    start: launch, create, begin, open.
    make: generate, compose, add, new.
  • 规避空洞的名字 如tmp, new等。如果非要使用,则仅用于短期存在,且临时性为其主要存在因素的变量。

  • 命名尽量后缀变量类型 类似str, arr等单词缩写,能够明显的表示出变量类型,以保证赋值时不会出现问题。

  • 在某些情况下,会有比i, j, k更贴切的迭代器命名。

  • 一个变量名字,就像是一个小小的注释
    尽管空间不是大,但不管你在名字中挤进任何额外的信息,每次有人看到变量名字时,都会看到这些信息。

  • 若变量是一个度量,记得带上单位

  • 名字的格式也可以表示含义 常量的格式:kConstantName
    宏的格式:MACRO_NAME

  • 名字的长度 在小的作用域内,可以使用较短的名字。
    但在为作用域比较大的变量起名字时,要采用更长的名字。
    大小写和下划线也很关键。

  • 使用max和min来表示极限。

  • 使用first和last来表示范围。

  • 使用begin和end表示包含/排除范围。

  • 给布尔值命名:加上is, has, can, should, 避免使用反义名字。

  • 与使用者的期望保持一致,某些情况下, get, set, size, length等fang’s方法默认是轻量级的。

####审美之美

  • 3条原则
    • 使用一致的布局
    • 让相似的代码看上去相似
    • 把相关的代码行分组,形成代码块
  • 使用换行来保持一致和紧凑
  • 整理时,将代码块抽象(为方法)解决不规则,重复的代码。
  • 必要时,使用列对齐
  • 在上下文中使用一致的顺序
  • 将代码分块,并为每个块提供统一型注释
  • 将声明分块,并为每个块提供统一型注释

####注释之美

  • 注释的目的是尽量帮助读者和作者了解的一样多。
  • 好的代码优于好的注释。

  • 针对代码中的瑕疵写注释
    • // TODO: 待办事项
    • // FIXME: 已知的无法运行的代码
    • // HACK: 对一个问题不得不采用比较粗糙的解决方案
    • // XXX: 重要的问题
  • 重要的是,你应该可以随时把代码将来应该如何改动的想法用注释记录下来。这种注释给读者带来对代码质量和当前状态的宝贵见解。
  • 为常量增加注释
    大部分常量都是不需要注释的,因为名字本身已经很清楚了。但是也有一部分常量,比如可以配置的常量,需要知道边界值.

  • 利用注释回答应有的问题和公布潜在的风险。

  • 在某个类前面增加注释,来描述该类或者文件的主要作用是非常有必要的。

  • 注释不仅仅要说明‘Why’,也要说明‘How’和‘What’。

  • 注释也是一种写作能力,经常写注释,就会发现写注释其实很简单。