@zhongjianxin
        
        2017-08-09T15:22:03.000000Z
        字数 1925
        阅读 1268
    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`