今天和沈讨论了一会对网站重构的想法,他提出的我对网站重构的目标的问题,我还没有很好的考虑过。网站的重构涉及:1)代码函数级的整理是简单的对代码进行熟悉的方法;2)网站架构重构,在目前基于Duwamish的架构的基础是不适合进行大量的重构的。因此,我们把重构的目标定位在对代码的简单整理,熟悉代码。下一阶段,再进行复杂的重构。架构本身并没有太大的问题(至少适合目前的应用),但是由于代码开发的混乱结果“腐蚀”了架构本身,使得后期无法维护,因此即便是有一个良好的架构,但是缺少开发中对代码的控制以及对代码的Review的辅助,一样会使得程序无法维护下去。
判断重构的五大基本原则(Robert C. Martin):单一职责原则(SRP)、开放—封闭原则(OCP)、Liskov替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP),然后结合Matin Flow的代码坏味道进行代码是否需要重构和如何重构的基本原则。(使用这些原则来问自己一些问题:这几个类符合DIP原则吗?)
沈向我推荐Robert C. Martin的“Agile Software Development:Principles,patterns,Practices”,他说:在考虑一个类的合理性的时候要看它是否符合几个基本原则,另外这本书中给出的实例里也包含了一些如何重构的例子。
谈论中,我一直在回避去讨论需求的合理性,因为缺少对需求本身的判别和分析,一味的“要怎么做就怎么做”,结果导致了代码的不同版本重叠(不好的代码编写习惯也是造成这个恶果的主要原因)。
我们还谈到了对存储过程的处理上。Duwamish框架是一个依赖存储过程来完成数据的存取,但是在开发中滥用了存储过程,一些存储过程中包含了业务逻辑的内容,比如对表的统计直接使用了存储过程,这样的存储过程要将其分解以后将统计逻辑在代码中实现。
另外,在目前采用了Duwamish框架“企业架构模式”一书中提供的方法已经不能够改变目前系统问题的现状,而参考“设计模式”中的各种方法,重新考虑代码的设计,将有助于系统的重构。(系统不可能在基础架构上做很大的调整,相反代码的重设计到是解决目前系统的“腐化味道的”办法。)