简单的介绍几点技巧,应用这些技巧可以使得设计出来的类更具有OOP的专业水准。
(1)一定要将数据设计为私有
最重要的是,决对不要破坏封装性。在有的时候,需要编写一个访问器方法或更改器的方法,但是最好还是保持实例域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常发生变化。当数据保持私有时,它们的表示形式的变化不会对类的使用者产生影响,即使出现bug也易于检测。
(2)一定要对数据初始化
Java不对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而是应该显示的初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有构造器中设置默认值。
(3)不要在类中使用过多的基本数据类型
就是说,用它的类代替多个相关的基本数据类型的使用。这样会使类更加易于理解且易于修改。例如,用一个称为Address的类替换下面的Customer类中的实例域:
private String street;
private String city;
private String state;
private int zip;
这样,可以很容易的顺应地址的变化,例如,需要增加对国际地质的处理。
(4)不是所有的域都需要独立的域访问器和域更改器
或许,需要获得或设置雇员的薪金。而且一旦构造了雇员对象,就应该禁止改变雇用日期,并且在对象中,常常包含一些不希望别人获得或设置的实例域,例如,在Address类中,存放州缩写的数组。
(5)使用标准格式进行类的定义
一定采用下面的顺序书写类的内容:
·共有访问特征部分
·包作用域访问特征部分
·私有访问特征部分
在每一部分中,应该按照下列顺序列出:
·实例方法
·静态方法
·实例域
·静态域
毕竟,类的使用者对公有借口要比对私有的实现细节更感兴趣,并且对方法要比对数据更感兴趣但是,哪一种风格更好并没有达成共识。Sun的程序设计风格建议Java程序设计语言先书写域,后书写方法。无论哪种风格,重要的一点是要保持一致。
(6)将职责过多的类进行分解
这样说似乎有点含糊不清,就是多少算是“过多”?每个人的看法不同。但是,如果明显的可以将一个复杂的类分解成两个更为简单的类,就应该将其分解。(但另一方面,也不要走极端,设计10个类,每一个类只用一个方法,显然也太小了。)
(7)类名和方法名要能够体现它们的职责
与变量应该有一个能够反映其含义的名字一样,类名也应该如此.
命名类名的良好习惯是采用一个名词(Order)、前面有形容词修饰的名词(RushOrder)或动名词(有-ing后缀)修饰名词(例如,BillingAddress)。对方法来说,习惯是访问器方法用小写get开头,更改器方法用小写set开头。