意大利面式的设计,很形象的一个词,大家都吃过面条,知道面条之间互相缠绕在一起,想知道它们的关系非常困难。意大利面式的设计很形象的说明了软件开发中的这种现象。系统很难维护,各种逻辑缠绕在一起,没有清晰的模块和层次关系,各个功能交织在一起。
这就导致了几个问题:
1 可扩展性问题,想增加新功能非常困难。
2 可维护性问题,出了bug很难发现问题或者修改后影响的地方特别多,每一次修改都需要做full regression test。
那么怎么避免呢?
1 写代码志之前先design,模块化和层次化你的代码。
2 引入code review机制,每一份需要提交的代码都需要进行code review。
3 引入unit tests,每一项功能都需要UT。因为对Spaghetti code进行单元测试很难,如果发现UT非常难写,那十有八九是代码设计的有问题了。