看了梁飞关于Dubbo设计过程中的经验,虽然大多是对框架方面的设计经验,有些也适用于产品和项目中,摘抄了下来
模块分包原则
复用度
– 包中的类应该有同样的重用可能性。
– 紧密协作的类应该放在一个包。
– 变化应在包内终止,而不传播到其它包。– 发布的粒度和复用度相同。
• 稳定度
– 被依赖的包应该总是比依赖者更稳定。 – 不要让一个稳定的包依赖于不稳定包。 – 单向依赖,无环依赖。
• 抽象度
– 越稳定的包应该越抽象。
– 稳定的包不抽象将导致扩展性极差。
– 抽象的包不稳定将导致其依赖包跟随变化。
API区分命令与查询
– 命令: • void set(Xxx xxx); // 无返回值表示命令,有副作用
– 查询: • Xxx get(); // 有返回值表示查询,保持幂等,无副作用
– 不建议: • Object delete(); // 删除并返回
– 建议:
– Object get(); // 先查询
– void delete(); // 再删除
开闭原则
• 对扩展开放。
• 对修改关闭。
• 软件质量的下降,来源于修改。
• 替换整个实现类,而不是修改其中的某行。