您的位置:首页 > 理论基础 > 数据结构算法

代码整洁之道--对象和数据结构体会

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)

重点:对象是封装的,对外提供方法,而不是数据。而数据结构就是暴露数据的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: