1 对象应该做其名称所指之事
假如对象名为“Jet”,它可能应该是takeOff()与land()(起飞与降落),而不该是takeTicket()──那是其他对象的工作,不属于Jet。
2 每个对象应该代表单一概念
不要让对象担负双重或三重责任。避免使用一个Duck对象来同时表示会呱呱叫的真正鸭子、黄色的塑料鸭或者低头躲避以免被棒球打到的人。
3 未使用的特性是无用的赠品
假如你有一个对象经常有空值或null的特性,你可能有一个对象在做一种以上的工作。假如你的某个特性很少有值,为何该特性是此对象的一部分?要不要有一个较好的对象仅使用原有特性的子集(subset)?