软开心法十一||无法复用
从程序一开始,程序员们就一直在努力的使得程序可以复用。也许如坊间流传的一样,这个世界是由懒人来推动发展的。复用使得程序完成的更快,程序员工作的更少,当然随之而来的是错误出现的概率会少,修改也会方便很多。
在那个只有面向过程语言的年代里,程序员们对于程序复用的渴求是那样的强烈和无处宣泄,因为不能轻松的复用,程序员们就要干一些本来已经干了的事情,修改一些重复要修改的问题。最终他们爆发了——面向对象语言被设计出来了——面向对象语言的特色就是封装和复用。面向对象通过继承,依赖,组合,聚合等来实现完美的代码复用。这种对于复用前所未有的支持,使得在面向过程语言下不能实现完美复用的程序员犹如在沙漠中看到了水一样的兴奋。面向对象语言以非常快的速度发展了起来。
在面向对象技术的风靡之后,很多的程序员开始使用这一技术,有初学者,有面向过程语言的开发者转过来的。但是问题随之出现了,过度的使用对象,轻率的使用对象,无知的使用对象使得面向对象语言所构造的程序中也存在了大量无法复用的难题。
过度的使用对象在于人们对面向对象技术的过分狂热,这种狂热使得理性的分析少了,这就导致了很多不合适的设计,还有很多过度的设计。对象在于抽象和封装,有些过度的抽象和封装反倒使得代码不容易复用。
轻率的使用对象和过度的使用对象属于一个后果的两个原因,轻率的使用对象在于没有分析清楚就使用,这样就导致了对象的抽象范围不利于问题的解决,把本该属于类A的数据和责任归类到类B,这样就造成了混乱而使得代码复用难度增加。
无知的使用对象是最为可怕的一件事情,这种问题不仅仅存在于对象的使用上,这种无知而导致的问题存在于世间的所有事情上。面向对象的流行使得很多人在没有了解清楚面向对象技术的情况就开始使用对象技术。我们在网络上,课程中,项目中,尤其是新人中,这种情况还是很多的,就是使用面向对象语言写出的面向过程语言式的程序,这种情况让你不知如何是好,当然了,结果是说它是过程式结构吧它有类,说是对象结构吧,它就仅仅只有类,因为其他都是面向过程式的思维。这种没有了解清楚对象技术的情况就贸然大肆的使用使得代码难于复用。
复用是一种思想,不能说是只有对象技术才有复用,代码无法复用的很多原因还是代码设计初期没有更多的考虑后期的复用,否则,只要心中常常有这种思维和想法,那么不管用什么语言,用什么技术,都能写出可以复用的代码,并且在复用的时候总能够实现复用的。而工程项目的人员、需求、概念的复杂化使得开发人员在很多时候没有心思考虑后期的复用,这样就必然导致软件噩梦之一——无法复用,当一件非常急的修改任务摆在面前,却又无法立即复用的时候,就非常容易出现另一种可怕的后果——代码复制,而这种代码复制会导致更加严重的后果。
为了方便修改,全文的权威地址为http://blog.sina.com.cn/s/blog_4a2100f801013pkg.html