1 短小精悍
- 代码块和缩进
if,else,while语句等其中代码块应该只用一行,改行大抵是一个函数调用的语句
2 只做一件事
要判断函数是否不只做一件事,判断的方法是是否能再拆出一个函数。
3 每个函数一个抽象层级
函数中的语句都要在同一抽象层级。读程序的时候就像一系列TO起头的段落,每一段都描述当前抽象层级,并引用下一抽象层级后续TO起头段落。
4 switch语句
上图的问题:
- 太长,出现新的的雇员类型,会变得更长。
- 明显做了不止一件事
- 违反单一职责原则,因为有好几个修改他的理由
- 违反开闭原则,每当添加新类型的时候,就必须修改
解决方案 ,是将switch埋到抽象工厂底下,不让任何人看到,该工厂使用switch语句为employee的 派生物创建适当的实体。
修改为
5 使用描述性名称
沃德原则“如果每一个例程都让你感到深合已意,那就是整洁代码”
6 函数参数
最理想的参数数量是零。有足够特殊理由才能用多参数函数。
多参数要封装类
7 分隔指令与询问
函数应该修改某对象的状态,或是返回该对象的有关信息,两样都干的话会导致混乱
public boolean set(String attribute,String value);
//可能会导致一下的使用
if(set("username","lishimin"))
解决方案把指令与询问分隔开
if(attributeExists("username")){
setAttribute("username","lishimin");
}
8 使用异常代替返回码
9 抽离trycatch代码块
trycatch代码块 把错误处理与正确流程混为一谈。
其实我认为最好的办法搞一个全局异常处理器,对于有可能异常的代码块,直接抛异常就可以了
10 消除重复
11 结构化 编程
Dijkstra认为 每个函数,函数中的每个代码块都应该只有一个入口一个出口。意味着每隔函数中只能有一个return语句,循环中不能有break或者continue语句.