cleanCode之对象和数据结构

1.对象和数据结构的区别

(1)数据结构中的对象只是数据,面向对象中的对象包括了数据和行为。

(2)数据结构暴露其数据,没有提供有意义的函数;对象把数据隐藏于抽象之后,暴露操作数据的函数。

(3)数据结构难以添加新的的数据类型,因为需要改动所有函数,面向对象的代码则难以添加新的函数,因为需要修改所有的类。

在任何一个复杂的系统都会同时存在数据结构和对象,我们需要判断的是要添加的是新的数据类型还是新的行为函数。

2.迪米特法则:模块不应了解它所操作对象的内部情形。

类C的方法f只应调用以下对象的方法:

(1)C;

(2)由f创建的对象;

(3)作为参数传递给f的对象;

(4)由C的实体变量持有的对象;

方法不应调用由任何函数返回的对象的方法,换句话说,只和朋友说话,不和陌生人说话。以下就是违反该法则的一段代码:

final String outputDir=ctxt.getOptions().getScratchDir().getAbsolutePath();

当然,迪米特法则的前提是对象,如果是数据结构,没有什么行为,则他们自然会暴露其内部数据结构,迪米特法则也失效了。

如果数据结构只简单的拥有公共变量而没有函数,对象拥有私有变量和公共函数,这个问题就不会混淆。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 命名规范 命名要有意义 名副其实。通过名称我们知道有关变量的大多数信息(是什么,做什么,怎么用)。 无歧义。 简洁...
    SimplyY阅读 6,618评论 0 1
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,866评论 1 32
  • 找到百分之一可以让自己站起来的价值 纪录片+老人+疾病,是三个票房毒药,凡电影设计到其中一项必会遭冷门,更别...
    小丫小丫阅读 2,490评论 0 0
  • 因为处在少年叛逆的年龄,对妈妈的了解总是累积得很慢很慢。 我始终很心虚,我不习惯和妈妈对上视线。因为内心里总有着对...
    庆也阅读 5,249评论 2 6
  • 今天,是姥姥的生日,我们 给姥姥买了一个大蛋糕。 姥姥家来了许多客人,其中有一个小妹妹,她吃饭的时候,总是吃完一个...
    李春颖母亲阅读 3,335评论 0 0

友情链接更多精彩内容