近来一直在学习面向对象的编程方法,有人说对于abap而言,面向对象是个鸡肋,因为它没有多么复杂的逻辑,有大量的可以重用的函数和方法,有很多现成的business object。这对于新手而言,的确具有极大的说服力,毕竟我们做的大量的开发集中在了report,说面向对象有点难过,我们甚至都不知道这个对象是什么,该如何去设计类,如何归纳方法,如何设计接口。但是,当我们做过了大量的程序开发,越来越发现自己做了太多的重复的事情,曾经以为把自己写的程序保存,将来就可以使用cp大法。可是随着自己程序小库的不断增加,在这其中想找到两年前曾经解决过的一些问题,其中的查找时间竟也不少于重新解决这个问题的时间。总之,我们浪费了太多的时间。
那么,这个问题该如何解决呢?我们的时间是宝贵的,所以提高程序设计的技巧就显得尤为重要了。我自己的看法,面向对象编程就是一条很好的路。
谈到面向对象,就会让我们想到继承,多态,封装。曾经,我们痴迷于function, subrutine,觉得函数,或者form都可以重用,也可以多态,同样可以封装,可是这个代价是很大的。举例,函数的接口作了改动,就要写个新的函数,form传递的参数稍微有些变化,我们就不得不满程序找用到这个form得地方,一一修改。我们把自己曾经写过的form保存下来,认为将来如果用的话直接参考,而忽略了也许将来是5年,我想,让任何一个人去找5年前写过的form都是一件很困难的事情。而如果我们用面向对象的编程来设计程序,结合uml,保存自己的设计,那么即使10年过去了,只要uml图保存着,那么找个能用的class还是很简单的事情。通过继承和接口,我们来实现多态,不怕将来有新的需求。对于方法我们可以重构,或许只需要继承一下类就可以了。
同时,我想转变是方便的,只要你知道面向对象编程方法,用过一些面向对象语言。即使没有那些经验,学起来也是比较简单的,可以参考一些书,例如:面向对象分析与设计[uml2.0版],网上有电子书可以下载的。
时代在进步,而我们的却在原地踏步,这样的话,我们就只能永远做体力活,成为别人的廉价劳动力。不要整天问这个方法怎么用,那个button怎么加,你可以自己解决的,除非被客户逼得要跳楼了。
我们大多数的编程不是进行“程序设计“,而是在“解决问题”,那么我们为什么不从分析设计程序开始呢?