【代码整洁之道】第六章:对象和数据结构

第六章 对象和数据结构

 

中国话:

将类中的成员变量设为私有private,就可以对外部隐藏类的实现细节。当修改类中方法的具体实现时,不会影响外部对类中方法的调用。

但是,有些码农总喜欢给类的所有成员变量都添加set和get方法,使得虽然标记为private的成员变量依然能够被外部访问,如同public一般。这是不好的习惯。

 

6.1数据抽象

 

以抽象的方式描述数据,不是简单地添加取值器和赋值器那么简单。

要以更好的方式呈现某个对象包含的数据,需要进行认真的分析。

傻乐着乱加取值器和赋值器,是最坏的选择。

 

6.2数据、对象的反对称性

 

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

面向对象的代码有利于在不改动既有函数的前提下添加新类。

 

反过来说: 过程式的代码难以添加新数据结构,因为如果添加新的数据结构,就必须修改所有相关函数。

    面对对象的代码难以添加新的函数,因为如果想添加新的函数,就必须修改所有相关的类。

“一切都是对象”只是个传说。有需要的时候,还是得面向过程。

 

6.3德墨忒尔定律

 

模块不应了解它所操作的对象的内部情形。

对象应该隐藏数据,暴露操作。

对象不应该通过存取器暴露其内部结构。


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

l  C

l  创建的对象;

l  作为参数传递给 f 的对象;

l  由C的实体变量所持有的对象。

 

方法不应调用由其他函数返回的对象的方法。换言之,不要使用连串的调用。
 

6.4数据传输对象

 

数据传送对象(Data Transfer Objects,DTO)是一个只有公共变量,没有函数的类。

 

6.5小结

 

对象暴露行为,隐藏数据。便于添加新的对象类型,无需(也难以)修改既有类型的行为。

数据结构暴露数据,没有明显的行为。便于向既有数据结构添加新的行为,但难以向既有函数添加新的数据结构。

 

你可能感兴趣的:(代码整洁之道)