读书笔记:《代码大全第2版》布局与风格


傻瓜都能写出计算机可以读懂的代码,只有优秀的程序员才能写出人能读懂的代码。

类的布局

  • 接口的布局顺序
    • 描述类的作用和用法的注释
    • 构造函数
    • public方法
    • protected方法
    • private方法
  • 实现的布局顺序
    • 类上面的注释,用于解释类的内容
    • 成员变量
    • public方法
    • protected方法
    • private方法

注释

读书笔记:《代码大全第2版》布局与风格

自说明代码

  • 你的类接口体现出某种一致的抽象吗?
  • 你的类名有意义吗,能表明其中心意图吗?
  • 你的类接口对于如何使用该类显而易见吗?
  • 你的类接囗能抽象到不需考虑其实现过程吗?能把类看成是黑盒吗?

子程序

  • 你的每个子程序名都能准确地指示该子程序确切干些什么吗?
  • 你的各子程序的任务明确吗?
  • 若各子程序中自成一体后更有用,你都将其各自独立出来了吗?
  • 每个子程序的接口都清晰明了吗?

数据名

  • 类型名描述有助于说明数据声明吗?
  • 你的变量名有意义吗?
  • 变量只用在其名字所代表意义的场合吗?
  • 你的循环变量名能给出更多信息,而不是i、j、k之类的吗?
  • 你用了名字有意义的枚举类型,而非临时拼凑的标识或者布尔变量吗?
  • 用具名常量代替神秘数值或者字符串了吗?
  • 你的命名规范能区分类型名、枚举类型、具名常量、局部变量、类变量以及全局变量吗?

数据组织

  • 你根据编程清晰的需要,使用了额外变量来提高清晰度吗?
  • 你对某变量的引用集中吗?
  • 数据类型简化到了最低复杂度吗?
  • 你是通过抽象访问子程序(抽象数据类型)来访问复杂数据吗?

控制

  • 代码中的正常执行路径很清晰吗?
  • 相关语句放在一起了吗?
  • 相对独立的语句组打包为子程序了吗?
  • 正常情况的处理位于“语句之后,而非在else子句中吗?
  • 控制结构简单明了,以使复杂度最低吗?
  • 每个循环完成且仅完成一个功能,是像定义良好的子程序那么做吗?
  • 嵌套层次是最少吗?
  • 逻辑表达式通过额外添加布尔变量、布尔函数和功能表简化了吗?

布局

  • 程序的布局能表现出其逻辑结构吗?

设计

  • 代码直截了当吗?是不是避免了自作聪明或新花样?
  • 实现细节尽可能隐藏了吗?
  • 程序是尽可能采用问题领域的术语,而非按照计算机科学或者编程语言的术语编写的吗?