小余

灵感源于交流,创新出自思考

导航

不要再面向对象

Posted on 2008-05-11 10:43  小余(Yice)  阅读(6659)  评论(107编辑  收藏  举报

如果你是一个初学者,正在努力的学习各种软件开发的技能,希望今后能够从事软件开发工作。那么在学习的过程中,就先丢掉面向对象,对于你来说面向对象是一颗毒瘤,他不会给你带来软件上更高层次理解,恰恰相反,你的逻辑思维正在被它慢慢的毒化,一堆似有似无的概念会把你的理解彻底毁掉,从而很难清楚的理解到底程序的本质如何,当你只会念叨“一切皆对象。”却挤不出一行代码的时候,那说明你已经病入膏肓。

应该说百分之九十九的计算机专业都开设有面向对象这门课程,我们现在所使用的大部分语言都是高级语言,例如:Java,C#这类的纯面向对象的语言。虽然大学课程中在开设面向对象之前都会先教受学生学习类似C语言这种面向结构化的开发语言课程作为学习的基础。 C,都过时了,现在都是java C#的天下。”我想不少初学者都会用这种不屑的眼光来看待这些所谓落伍的课程。我们都知道一个盖楼的基本道理:“先打实地基,然后再在上面按照先前的设计修建好各种楼宇。”盖楼需要先打地基,地基要结实才能保证大楼傲然挺立,如果没有地基,再好的楼宇也迟早会坍塌。而且再漂亮的楼宇你也无法看到它的地基。

面向对象的提出主要是解决面向结构软件开发中代码可复用性和可维护性不佳的问题,从软件学的本质来说,面向对象并没有改变软件运行的本质,所改变的只是代码开发中问题处理和思维方式,所有的高级语言都是经过编译器的处理转换成后成为一条一条的指令代码。所以如果希望能够对程序有比较好的理解,就需要了解运行的实际状态。透过高度抽象的层层烟幕看清实质是做软件开发的基本功力。如果要对编程语言进行归类,最简单而有实效的划分就是汇编指令编程语言和高级编程语言,无论是C,C++,C#,Java都是一种高级编程语言。不论是哪一种高级编程语言,最终的形式都会转换成CPU运行的一条一条指令后运行,目前计算机的CPU中还无法直接运行高级编程语言的代码。

是不是说学不好结构性的编程语言就无法学好面向对象呢?答案应该是肯定的,面向对象是在结构性编程语言上抽象而来的,应该说面向对象所处在的层次要远远高于结构性编程语言,面向对象的学习难度和周期都要高于面向结构的编程语言。面向对象的技术起点也是基于面向结构,在面向对象的开发过程中需要开发大量的函数,这些函数用的都是结构化处理的思想。如果你连基本的结构性程序都很理处理的一塌糊涂,你如何在更高的层次上进行抽象?

是不是用面向对象语言写出来的程序就是面向对象呢?有多少人用面向对象的语言写出的代码是一片混乱,重复使用的代码没有进行抽象。一个类中的函数分不清楚什么时候应该用Private, Protected,Public。类对于他们来说就像是面向结构中的一个文件,只是用来进行管理代码。

所有的初学者们,面向结构的语言并没有过时,如果你们的老师在没有先让你学好面向对象之前就让你上马学习面向对象,那么他就是用一种不负责任的态度进行教学。浮沙之上岂能筑高台。先静下心来,切忌浮躁,一步一个脚印才能走得更远。不是说你知道了类,对象,属性之后就表示你会了面向对象。