@zhongjianxin
2017-08-09T23:22:03.000000Z
字数 1925
阅读 1110
Trainning
clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码。从功能性赖理解就是可读性高,可维护性强。
一方面是编译好让机器执行,完成功能需求;
另一方面,是写给身边的队友和自己看的,需要长期维护
注释不能让写的烂的代码变的更好。如果别人只能依靠注释读懂你的代码的时候,你一定要反思代码出现了什么问题
比较适合写注释的两种场景:
勤于重构
① 掌握一些常见的“无痛”重构技巧,这在下文会有具体讲解。
② 小步快跑,不要企图一口吃成个胖子。改一点,测试一点,一方面减少代码merge的痛苦,另一方面减少上线的风险。
③ 建立自动化测试机制,要做到即使代码改坏了,也能保证系统最小核心功能的可用,并且保证自己修改的部分被测试覆盖到。
④ 熟练掌握IDE的自动重构功能。这些会很大程度上减少我们的体力劳动,避免犯错。
静态检查
多读开源代码和身边优秀同学的代码
开源社区,为我们提供了这么好的学习机会。无论是JDK的源码,还是经典的Netty、Spring、Jetty,还是一些小工具如Guava等
public void doSomeThing(Map params1,Map params2){
Do1 do1 = getDo1(params1);
Do2 do2 = new Do2();
do2.setA(params2.get("a"));
do2.setB(params2.get("b"));
do2.setC(params2.get("c"));
mergeDO(do1,do2);
}
private void getDo1(Map params1);
private void mergeDo(do1,do2){...};
举个例子,上文引用的代码如果用method object表示大概会变成这样
class DoMerger{
map params1;
map params2;
Do1 do1;
Do2 do2;
public DoMerger(Map params1,Map params2){
this.params1 = params1;
this.params2 = parmas2;
}
public void invoke(){
do1 = getDo1();
do2 = getDo2();
mergeDO(do1,do2);
}
private Do1 getDo1();
private Do2 getDo2();
private void mergeDo(){
print(do1+do2);
}
}
继承更多的是为扩展提供便利,为复用而存在的方法最好使用组合的方式
References:
Clean Code`