CleanCode CH5 CH6

来源:互联网 发布:ps拾色器快捷键 mac 编辑:程序博客网 时间:2024/05/16 12:58

CH5 格式

代码格式很重要,原始代码修改很久后,可能代码不存在了,但是代码行文风格还是保留。

 

垂直格式

相关函数,调用者应该尽可能的放在被调用者的上方。

概念相关放在一起。

 

横向格式:

 

CH6 对象与数据结构

1 隐藏并非只是在变量之间放上一个函数层这么简单,隐藏实现关乎抽象。类并非简单实用取值,赋值函数,而是暴漏对象接口,以便用户不用了解数据实现,就能操作数据。

  所以要以最好的方式呈现某个对象包含的数据,需要严肃的思考。

 

2 面向过程与面向对象

过程式的代码(使用数据结构的代码)便于在不改动数据结构的前提下添加新函数;

面向对象的代码(类,多态)便于不修改既有函数的前提下添加新类。

反过来:

过程式代码不适用与增加新的数据结构,因为所有的既存的任何函数都需要适应新的数据结构的实现。

面向过程的代码不适用于增加新函数,因为既存的所有类都需要添加新方法。

所以选择的时候需要根据具体情况而定。

 

 

3 law of demeter

方法不应该调用有任何函数返回对象的方法,只跟朋友讲话,不与陌生人谈话。

比如 final String outputdir  = ctxt.getOptions().getScratchDir().getAbsolutePath();

正确的做法是让服务提供者,提供完整的服务,而不是到处去找。

比如上述的问题,可以试着看看这个outputdir使用者是怎么使用的,我们发现这个就是用这个目录来创建一个临时文件的,

正确的做法就是  bufferoutputstream = ctxt.createscratchFileStream(filename), 这个例子表示我们确实需要抽象出来,而不是仅仅返回类中的数据。