命名:
1.如果名称需要注释来补充,就不算名副其实。避免使用魔鬼数字,避免使用C++/linux关键词作为命名。避免使用O 1 i等具有误导性命名。
2.废话都是冗余。如:table不应出现在表名中。a/the/info/data等大抵属于废话。
3.名称长短应与其作用域大小相对于。
4.命名不用前缀,当你的命名有意义时,会很快忽略到前缀。(不赞同类私有成员m_前缀,阅读代码会变慢,个人理解。可以尝试改变)
5.类的命令不要使用到I/C 打头,这样用户会看到你的接口类型,而面向对象编程,忌讳接口。
6.类名大多为形容词,没有动词。避免使用data、info、manager,processor(处理器)等
7.可适当给变量加上前缀修饰语境,如果使用较多,可封装成类的形式。
函数:
1.函数第一规则就是短小。
2.函数内缩进层级不应该多于一层或者两层。
3.保持函数只做一件事情(函数只做了该函数名下同一抽象层上的步骤、无法拆分更多区段、向下原则,阅读代码时自上而下只有一个区段)。
4.大抵switch语句都可以用工厂模式改写,就可以把switch语句隐藏在工厂类中,不必要每次新增、都需要修改。
5.函数越小、功能越集中越便于取好名字。
6.一元函数遵循(动(名)):a.输入参数用于转换为输出参数(返回值。)b.输入参数用于启动某一事件。
7.不应该使用bool类型做为入参。
8.二元函数入参有序,如一个点有两个参数一样,不然可以拆分为一元函数,方法:结构体、成员变量、构造器中的方法实现。
9.尽量不写三个参数的函数,如果有,则很大可能可以将参数封装成类。
10.使用异常处理替代返回错误码。处理异常的代码通常搞乱代码结构,可以统一封装成接口。
11.消除重复,结构化编程,少些return,代码需要多次修改,没有一次就可以写出很漂亮代码的。
注释:
1.不做无意义注释,注释时间长了,程序员修改代码,不修改注释,会使注释变为一堆错误信息。
2.短小函数不需要注释。
3.尽量用变量名、函数名、参数名形容,以减小注释的地方。
4.函数返回值、方法实现难点、魔鬼数字可用必要注释加以说明、公司信息法律信息专利信息可用注释说明。
5.删掉无用代码,不要过多注释代码,尽量处理,让代码不显得冗余。
6.用了TODO注释,应该在短时间内清理代码中TODO部分,以免功能缺失。
代码结构:
1.垂直结构,阅读代码都是从上至下,从左至右。
2.横向代码长度应该小于120个字符。
3.赋值等低优先级操作,左右之间应加上空格,高优先如* / < >等操作符不加空格,函数名与参数间不加空格,便于重点突出。
4.遵循段落结构,代码方法中代码段落层次清晰。
5.缩进原则:函数实现。if/while/for等需要缩进。
6.变量定义时不需要对齐,对齐会导致阅读者阅读代码时忽略掉变量类型。
7.段落结构,相互有关联的函数应该放在一起。
对象和数据结构:
1.隐藏实现,利用抽象,不向用户暴露数据。
第1/2小节不懂:隐藏于抽象之后不是简单的添加取值器或赋值器。过程式代码(便于添加新函数)、面向对象分别有用(添加新类),
对象和数据结构差异: 对象把数据隐藏于抽象之后,暴露操作数据的函数,数据结构暴露其数据,没有提供有意义的函数。
2.得墨忒耳定律:模块不应该了解它所操作的对象内部情况。不应调用方法中的对象内部方法/数据. 可以调用方法中的数据结构。
不是很懂整章。
待续…
本文阅读资料《代码整洁之道》 ----(美)马丁(Martin,R.C) 著;