第一章:命名
自己的不足之处主要是 :专有名词了解少,在函数方法里的参数命名比较随意。
第二章函数:
1,要求:一个函数只做一件事。单一权责。
2,不同抽象层的不应该在一个层级(我的理解是,抽象概念—具体步骤—实现细节,这样的分层。)
3,switch语句。本身就做多件事,建议放在较低抽象层。可以使用多态实现。这一条建议不绝对要这样做。
4,对于函数名要使用描述性的名称。
5,函数参数应当小于2,不得已3,越少越好。因为参数和函数是不同层级,因此应该尽量少。
6,当对传入参数做转换,应当从返回值看出,避免使用void。
7,不推荐使用标识参数(true,false) 会使函数更加复杂化。应该直接将函数一分为二。
8,二元函数让人难以理解,有时容易搞错,比如比较两个参数时。理论上可以将一个其中一个参数作为成员变量就可以简化为一元函数。
9,三元函数。避免!!!
10,参数多于二其实可以使用类来表示。
11,可变参数也应当符合以上规则。
12,assertEqual改成assertExpectedEqualsActual(expected,actual),会更好。
13,函数如果修改某种状态,最好修改对象的状态。比如:void appendFooter(stringbuffer report) 比不上report.appendfooter()。
14,setIfexist(string attr,string value),不如分成两个:exist(string attr) 和 set(string attr,value) 表达意义更加清楚。
15,用异常来代替错误码,使用try catch可以避免很多不必要的嵌套结构。
16,try-catch 丑陋不堪,会影响主体清晰。应该将有try-catch抽离成新的函数
17** 错误处理就是一件事,try-处理应当在函数的第一个单词。
18,消除重复代;
19,以上,不是说要一次做到,可以写好代码后不断重构优化。