CH2 有意义的命名
关于按领域命名:
编程实际上包括两个层面,问题领域和解决方案领域,优秀的程序员工作之一就是分离解决上述两个领域的问题。
涉及到代码命令,原则是靠近问题解决领域的代码使用解决领域概念命名,比如Job_queue,靠近问题领域的代码使用问题领域概念命名。
关于添加语境:
方法1优于方法2
方法1:通过类名,函数名获取相应语境。优点:可以获取短的变量命名。
方法2:通过增加前缀。
不要添加无用语境
缺点1:名称太长
缺点2:IDE无法帮助,比如都是SCS_开头的变量
CH3 函数
关于代码缩进:
作者建议函数的缩进只能是1或者2,意味着所有的IF/ELSE/WHILE 代码块只能只有一行代码:
优点1: 函数短小
优点2:块内调用函数有较明确的描述性名称
优点3:没有嵌套
关于函数只做只做一件事:
什么称之为一件事:
1 该函数名下的所有语句都在同一抽象层次,判断是否是在统一抽象层次可以看看是否可以使用TO起头的段落来描述这个函数。
2 看是否能再拆出一个函数。
关于邪恶的switch语句:
邪恶1:违反了单一职责原则(SRP)
邪恶2:违反开放封闭原则(OCP)
邪恶3:可能同一个概念分叉在不同代码里反复出现
解决方案:
1 将switch下放到抽象工厂的底层,抽象工厂通过switch创建对象实例
2 上层方法method通过多态方式实现分叉功能。
原则是允许switch出现一次,用于创建多态对象
关于处理错误码:
代码中处理错误码,违反函数单一处理的要义,相当于函数做了两件事:正常流程;错误处理
解决办法:使用异常代替返回错误码。
try{
xxxxxxxxxxxxxxxx //throws Exception{xxx}
}
catch()
{
}
关于如何写出这样的函数:
1 没有人从一开始就按照规则写函数。
2 首先写这样的函数,配上单元测试用例,覆盖每一行测试。
3 refine直到称心如意。
CH4 注释:
尽量不要写注释了~~~~~~