1、在设计框架时,高层模块不依赖低层模块,两者都依赖抽象。遵守依赖反转原则,将依赖具体的实现替换成对抽象的依赖,方便修改和抽插式替换,实现系统的松耦合,可扩展性和可维护性。
2、在设计功能时,要具有扩展,抽象,封装意识,思考一下这些代码未来可能有哪些需求功能变化,事先留好扩展点,保证是基于已有代码去扩展代码,而不是修改已有代码。要遵守开闭原则,对扩展开发,对修改关闭,实现最小代码改动,灵活插入扩展点。
3、在设计类时,不要设计大而全的类,而是要设计功能单一,颗粒度小的类。遵守单一职责原则,实现代码的高内聚,复用性,可读性,可维护性。
4、在设计类之间依赖关系时,不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。遵守迪米特法则,实现代码的松耦合,缩小功能改动导致的代码改动范围。
5、在设计继承关系中子类时,父类定义了函数的约定或者协议,那子类可以改变函数的内部实现逻辑,但不能改变函数原来的“约定”或“协议”,比如输入,输出,异常的约定,甚至包括注释中罗列的任何特殊说明。遵守里式替换原则,是实现开闭原则的重要方式之一,保证类的扩展不会引入新的错误。
5、在设计接口时,接口的设计要尽量单一,不要让接口的实现者和调用者依赖那些不需要的接口函数。要遵守接口隔离原则,将臃肿庞大的接口拆分成小接口组合使用,实现系统的松耦合,灵活性。
6、在编写代码时,遵守YAGNI原则,不要写当前用不到的代码。遵守DRY原则,不要写重复代码。遵守KISS原则,要写简单的代码。