一定要保证数据私有
数据私有时不影响类的使用者;发生了BUG也易于追踪调试。
一定要对数据进行初始化
实例化对象时尽管有默认值,但是我们还是要对数据进行显式初始化。可以在定义时进行默认值初始化,也可以在所有构造器中进行初始化。
不要在类中使用过多的基本数据类型
用一个类代替多个相关的基本类型,更易于理解和扩展。例如类中有以下几个基本类型:城市、街道、门牌、邮编,都是和地址相关的,我们可以用一个“地址”类代替。这样易于理解,也便于以后地址的扩展和修改。例如处理一个国际化地址。
不是所有的域都需要域访问器和修改器。
有些域是实例化后禁止更改的,例如员工入职后,入职时间是禁止更改的。有些域不希望用户看到,例如部门ID。
将职责过多的类进行分解
如果明显可以将一个类拆分为两个更为简单的类,那就进行拆分。
类名和方法名要能体现它们的职责
类名的良好习惯是采用一个名词(Order)、前面有形容词修饰的名词(RushOrder)、或动名词(有“ -ing” 后缀)修饰名词(例如, BillingAddress )。
对于方法来说,习惯在访问器前面加get,在更改器前面加set。优先使用不可变的类。
有的类调用其方法更改,会返回一个新的对象,就是不可变的类。例如java中LocalDate。而有些类的方法可以修改其内部数据,这样的类就是可变的。
如果类对象是可变的,在进行多线程变成的时候,多个线程同时访问一个对象,则会出现不可控的情况。