重构的新篇章
这篇文章讲述了重构 CBC 代码的一些事情。
(CSDN Sept 06, 2006)
重构,是从看TSW的那本书――Refactoring: Improving the Design of Existing Code――开始的。 很好的一本书。我也是从那时起搞清楚了一些简单的重构技巧。
但是真正有机会作重构,是在我开始了Code Beautifier Collection项目之后,因为从2.0开始,我就在接触已存在的代码(软件架构最初是基于David的Sharp Builder Tools)。为了将JCF呼叫的部分加入进去,做一些改动似乎是不可避免――这就是物质基础吧。同时,从Delphi 2005开始,Borland的IDE加入了重构支持,这又提供了很好的工具。所以,重构的条件似乎已经成熟。但是,这还是一种没有方向的重构,没有很令人欣慰的改善。
究其原因,自然是我没有吃透人家的代码,同时,没有TDD的技术来验证重构的效果。所以,大概也就是以让自己更容易理解那些代码为目标。
在2.4版本的最后,我重新阅读了Data Structure一书。大概是其中一些方便的结构让我萌发了重新设计架构的想法,所以,很多原来SBT的设计被修改和加强,大量的树结构引进,解决的菜单创建,标签页创建的问题。重构,在这一艰巨过程中发挥了极大的作用。但是,从使用者的角度看,CBC一点变化也没有。不变,酝酿着下一轮巨变。
5.0原来是打算作为2.5发布的。但是,这个阶段的CBC架构已经脱离了SBT的束缚,向着插件架构急速迈进。在这一篇博客中我提及了CnPack的问题,没有想到在两三个月之后,我就在自己的CBC中解决了这样的问题。很高兴。
从5.0到5.2,大量的新特性被加入到CBC里面,很大的一个便利条件就是良好的,友善的架构。从AddMany,C#Builder Goodies导入时的尝试,到Sharp Builder Tools导入时的麻烦,直到最近导入ArtCSB时的轻松自在。LeXDK的成长让我对于架构设计的认识到了一个全新的阶段。
使用SBT的架构在开始这个项目时,似乎是一个最好的选择。由于使用了不错的设计模式,SBT架构总的来说是很优秀的。我也很高兴做完CBC 2.4和5.0之后,我可以轻松的理解Design Patterns一书的部分真谛。说真的,设计模式确实是一种高级技术,不使用自然不会妨碍编码,但是合理的使用势必带来极大的方便。
现在,我正在利用业余时间阅读一本05年的书,Refactoring to Patterns ,在业界,这也是一本公认的好书。如果你和我一样刚刚学完模式,正感觉不使用不爽,那么看看这本书的提示,会很方便的得到指导,哪里应该使用模式,就通过重构改变代码到模式,哪里不需要,就绝对不要Over-Engineering。
等到看完之后,我想,CBC又会大变样了,因为现有的几个疑问,应定会得到部分解决。只是,这样的变化在本月发布的5.2版本中似乎是没有的了,看书和思考又占去了不少时间。期待GrapeVine吧,.NET2.0/3.0和模式的事情可以一起做。