类
1、当类失去内聚性就拆分它。
系统
1、将构造与使用分开:
方法1:将全部构造构成搬迁到main或称之为main的模块中。
方法2:抽象工厂。
方法3:依赖注入。
问题
1、重复。重复的代码可能成为子程序或干脆是另一个类。将重复代码叠放进类似的抽象,增加设计语言的词汇量。
不同模块中不断重复出现、检测同一组条件的switch/case或if/else链,可以用多态来替代之。
采用类似算法但具体代码不同的模块,可以模板方法或策略模式修正。
2、基类依赖于派生类。
3、人为耦合。不互相依赖的东西不该耦合。普通的enum不应在特殊类中包括,在特殊类中声明一般目的的static函数也是如此。
4、特性依赖。类的方法只应对其所属类中的变量和函数感兴趣,不该垂青其它类中的变量和函数。
5、不恰当的静态方法。通常应该倾向于选用非静态方法,利用其多态行为。
6、不准确。某个查询第一次匹配不一定是唯一匹配,不用浮点数表示货币,不能由于不想做并发更新就避免使用锁和/或事物管理。
7、掩蔽时序耦合。
8、函数不止在一个抽象层级上。
9、在较低层级放置可配置数据。位于较高层级的配置性常量易于修改。
10、传递浏览。不让某个模块了解太多协作者信息,如不要写类似a.getB().getC().doSomething()的代码。