代码整洁之道--对象和数据结构体会
2017-03-25 12:18
302 查看
1.模块不应该了解它所操作对象的内部情形。对象隐藏数据,暴露操作,这意味对象不应该通过存取器暴露其内部结构
因为这样更像是暴露而非隐藏其内部结构。
对象应该暴露行为,而不是数据。
迪米特法则
类C的方法f只应该调用一下对象的方法
C
由f创建的对象
作为参数传递给f的对象
c的实体持有的对象
方法不应该调用任何函数返回对象的方法,不要和陌生人说话
final String outtputDir = ctxt.getOptions().getScratchDir().getAbsoluePath()
上面的代码,模块知道ctxt对象包含有多个选项,每个选项有一个临时目录,而每个临时目录有一个绝对路径。
对于一个函数,这些知识真够丰富的。调用函数懂得如何在一大推不同对象间浏览。
这些代码是否违法迪米特法则,取决于ctxt,Options和ScrattchDIr是对象还是数据结构。如果是对象,则它们的
内部结构应该隐藏而不是暴露,而有关内部细节的知识就明显违反了。如果它们是数据结构结构,没有任何行为,
则它们自然会暴露其内结构,迪米特法则就不适用了。
隐藏结构
如果ctxt是对象,就应该要求它做点什么,不该要求它给出内部情形,那我们为何还要得到临时目录的绝对路径了?
ctxt应该隐藏其内部实行,观察模块其他代码,发现调用以上方法只是为了创建指定名称的临时变量
所以,直接要ctxt对象来做这件事情如何?
BuerdOutputStream bos = ctxt.createScratchFileStream(classFileName)
重点:对象是封装的,对外提供方法,而不是数据。而数据结构就是暴露数据的。
因为这样更像是暴露而非隐藏其内部结构。
对象应该暴露行为,而不是数据。
迪米特法则
类C的方法f只应该调用一下对象的方法
C
由f创建的对象
作为参数传递给f的对象
c的实体持有的对象
方法不应该调用任何函数返回对象的方法,不要和陌生人说话
final String outtputDir = ctxt.getOptions().getScratchDir().getAbsoluePath()
上面的代码,模块知道ctxt对象包含有多个选项,每个选项有一个临时目录,而每个临时目录有一个绝对路径。
对于一个函数,这些知识真够丰富的。调用函数懂得如何在一大推不同对象间浏览。
这些代码是否违法迪米特法则,取决于ctxt,Options和ScrattchDIr是对象还是数据结构。如果是对象,则它们的
内部结构应该隐藏而不是暴露,而有关内部细节的知识就明显违反了。如果它们是数据结构结构,没有任何行为,
则它们自然会暴露其内结构,迪米特法则就不适用了。
隐藏结构
如果ctxt是对象,就应该要求它做点什么,不该要求它给出内部情形,那我们为何还要得到临时目录的绝对路径了?
ctxt应该隐藏其内部实行,观察模块其他代码,发现调用以上方法只是为了创建指定名称的临时变量
所以,直接要ctxt对象来做这件事情如何?
BuerdOutputStream bos = ctxt.createScratchFileStream(classFileName)
重点:对象是封装的,对外提供方法,而不是数据。而数据结构就是暴露数据的。
相关文章推荐
- 代码整洁之道----对象和数据结构
- 代码整洁之道----对象和数据结构
- 代码整洁之道------ 对象和数据结构
- 代码整洁之道 对象和数据结构
- 代码整洁之道精华——第六章 对象和数据结构
- 代码整洁之道-第六章-对象和数据结构-page87
- 代码整洁_对象和数据结构
- Java编码规范,让你的代码赏心悦目--对象和数据结构
- Java进阶之路【代码篇】——《CleanCode》编程规则精编(5)对象和数据结构
- Java编码规范,让你的代码赏心悦目--对象和数据结构
- Java编码规范,让你的代码赏心悦目--对象和数据结构
- 《代码简洁之道》总结六之对象和数据结构
- Java编码规范,让你的代码赏心悦目--对象和数据结构
- Java编码规范,让你的代码赏心悦目--对象和数据结构
- 代码整洁之道(五)---------------------数据结构与对象
- 您希望通过将所有ArrayList对象替换为相应的泛型版本以提高应用程序的效率,并使得代码更易于使用。当结构体或其他值类型存储在这些数据结构中时,会导致装箱/拆箱操作,这时就需要这么做。
- 代码整洁之道之旅心得与体会
- 6、代码整洁之道——对象和数据结构
- Java编码规范,让你的代码赏心悦目--对象和数据结构
- Java编码规范,让你的代码赏心悦目--对象和数据结构