软件开发是是很痛苦的,这就是我现在的感受。为了提高开发效率、写出适应变化、易于维护的软件,我在接触了很多东西,大多数都是浅尝辄止,因为项目还是在继续,在巨大的交付压力下,根本没时间去研究各种方法孰优孰劣。
很久以来我在寻找一种万能的开发方法,这种方法可以解放人的脑子,只是动动的简单的思维就可以了,不用敏思苦想,搞的人精疲力尽。在人月神话里面,这个方法被成为“银弹”,作者预测了10年内没有银弹,虽然现在10年早就过去了,可是依旧没人发现银弹。
前一段时间,看到了测试驱动开发(TDD)的概念。在讲测试驱动开发书里,作者煽情的描述了TDD的好处,如何测试、如何重构、如何迭代,最终推出功能正确、设计良好、易于维护和货栈的代码。我觉得眼前一亮,不仅心动,感觉这就是银弹,决定把这个技术用到项目里。
当我在项目中用TDD的时候,发现unit Test有好多东西要学,我不知道怎么去编写test case.,我不是对领域不熟,相反,我在在那个领域工作了几年,之后才转行做软件开发的,我对领域是很熟悉的,可是我就不是不能把心里的想法,转变成代码!这很让人痛苦。
有人说,面向对象编程,可以提高代码复用,可以提高开发效率的。所以,为了代码复用和提高效率,我从vb6,转到vb.net,因为vb.net的完全面向对象的。可以当我转到vb.net的时候,感觉一下子不会编程了。我一直以为自己对面向对象开发很熟悉,不就是类,对象,继承,多态,封装吗?可实际上,我根本不适应面向对象的编程。写出代码,不以前更难修改,甚至不知道改怎么写。
于是,我学习了设计模式。当我打算在项目中使用设计模式的,发现寸步难行,因为我不知道应该建立什么对象。
我又退回去学面向对象的基本知识,在知道了面向对象的几大原则后,心里窃喜,这下不怕编程了。可是实际做项目的时候,又不行了。我不知道怎么把这些原则应用到项目中,觉得没有地方可以用到继承。