软件开发经历回顾
第一阶段(2007年底~2008年):
2007年偶然间阅读了Maintain的《重构,改善既有代码的设计》,他把各种重构手法描述的非常清楚,让我非常迷恋重构。然后就经常在手边的项目中经常性地使用一些手法,如Extract Method、Rename variable Name、Rename method等,再或者将for变为foreach等。由于当时对面向对象完全不明白,因此也仅限于写好函数。当然我的加班时间增多,原因很简单改出一不少问题,加班搞定嘛
第二阶段:
了解面向对象的基本概念(继承、封装、多态),开始思考什么场景使用静态方法,什么场景使用实例方法,到底是应该使用抽象类还是接口,什么场景使用继承,什么场景使用组合。然后就在项目里到处尝试使用学习的皮毛知识,虽然到处误用,但也总算有了一点点的感觉。这个阶段开始使用一些稍高级点的重构手法,如pull down、pull up、move method、extract class等。加班时间持续增多....
第三阶段:
开始迷恋GOF的《设计模式》,听李建忠老师的《设计模式》讲座,总是听得很入神,但总没法找地方用。这种情况持续了好长一段时间。这个时期几乎完全迷恋设计模式,重构水平没什么长进。
第四阶段:
也许是因为我比较喜欢研究这类的东西,偶然间有机会进入了公司的平台技术部参与平台开发。开发平台的开发与普通项目开发有较大的不同,一般的项目只要搞定目前的客户需求即可,然而平台开发需要考虑性能、扩展性、易用性、可配置等。要不然几十个项目并行,各个项目有不同的需求,总不能为每个项目定制吧,那样一定会把自己给搞疯掉的。从那时开始,解决问题时总是尝试寻找可能使用的设计模式。还记得当时经常使用的几个模式:Abstract Factory、Strategy、Adapter、Decorator模式等,然后利用反射来创建工厂对象以解决配置问题。这个阶段误用了不少设计模式,也就是在这个阶段对模式地使用有了一点点感觉。这个阶段有很多说不出来的痛苦,如用了模式确实带来了好处,但到处使用很显然带来较大的复杂性。这个阶段对于ORM的了解,基本上也就是如何把对象数据存储到数据库,如何将数据库的数据读到对象中,当时做过类似的框架。已经不太在乎加班了,已经习惯了.....
第四阶段:
了解了面向对象的原则(OCP、ISP、LSP、DIP)。了解了软件组装的概念。认为软件是由很多符合各种契约的组件组装而成,软件设计应考虑满足面向对象的原则。这个阶段的主要问题是如何设计满足业务需求同时满足面向对象的原则的软件。也就是在这个阶段,开始接触了TDD(测试驱动开发),开始在项目中使用测试驱动的方式开发功能模块。当然这个阶段主要考虑的问题是如何使代码可测试,再加使用Mock的使用,可以解决代码可测试的问题。代码结构清晰、具有较好的测试用例覆盖率,再也不用担心出现Bug了。每次增加或修改功能,只需要再运行一次测试,红灯、绿灯、红灯。哈哈,这种感觉很爽。加班?谁再给我提加班,我跟谁急,做我最爱的开发呢!
第五阶段(目前):
更加深入地理解面向对象的原则,并将这种原则努力运用到测试驱试开发中,使设计方案符合业务架构的需要,能够满足目前及未来的变化。这个阶段对重构的认识:测试用例覆盖,小步骤使用合适的重构手法,保证重构的正确性.....

浙公网安备 33010602011771号