之前写过一篇如果你也是.NET程序员,收到不少留言,各种意见都有,之前的说话方式不够友好,特此向因看过而心生郁闷的人道歉。

     问题在于我为什么不停的提面向对象呢。说来我并不是面向对象圣徒,我真正想说的是“结构化”的编程思想和代码组织方式的培养和习惯,我说的结构化是“有结构的“,这样的结构包括但并不限于面向过程和面向对象。

       这样就有个问题,比如“我自己独特的结构”不也是”结构化”吗。Martin Fowler的重构的里有说“任何一个傻瓜都能写成计算机能理解的代码。唯有写成人类容易理解的代码,才是优秀的程序员”,代码如果仅仅给计算机读那怎么写都无所谓,只要是正确的代码总能执行,但是我们的代码是需要维护的,一般的代码更多还是要让人能轻松的读懂,所以“自己独特的结构”只能自己看。所以话说回来,大家都知道的,比较流行的“结构”包括但并不限于面向过程和面向对象这两种方式。 然而就算是面向过程与面向对象这两种, 就算是其中之一,你坚持了吗?比如我的代码到底是面向过程还是面向对象,还是很混乱 就算无所谓,我的代码能让人轻松读懂吗?

      面向过程或者面向对象的代码就一定方便阅读吗?不管出于什么样的原因业界流行这样两种。先是以C语言为代表的编程语言,以及面向过程的编码方式,接着后来以java语言为代表,面向对象的编码方式(我仅仅说的是代表,说的两个方面), 我们在学校的学习以这些为基础,工作中必然也是也这些为基础交流。如果我们坚持面向过程,或者面向对象,就为我们的程序方便阅读提供了前提。怎样才能体现面向对象和面向过程这两种其中之一呢。如果你一直以C语言编程,坚持面向过程编程中的一些原则,那么今后受过良好面向过程训练的人就比较容易阅读你的代码了不是吗。如果你以java或者C#编程, 坚持面向对象设计与编码的一些原则,不是为一个受过良好面向对象训练的人读懂你的代码提供了方便吗?

      我为什么说面向对象呢?我更要时候的是坚持“结构化”,如果你能写出优秀的面向过程的设计也很好啊。如果你坚持用C#来做面向过程的开发也行啊,希望下个接替你位置的人也是用C#写面向过程代码的人吧。不过更多的是一个用C#写代码的人接受的是面向对象方面的训练。用C也可以写出面向对象的设计啊,不知道有人看过ooc这本书呢,(这本书里介绍用C语言写面向对象的代码,弄的很复杂),应该有很多人不知道用static可以让一个.c文件的变量,结构和函数变成私有的吧。只是这样,一个只进行了面向过程训练的人能轻松看懂用C做的面向对象开发代码吗。 所以一个.net小项目就不要面向对象了吗,说不定哪天因为功能扩展变成大项目了呢,更说不好将来维护的人根本就没接触过面向过程,就算一个小项目对他来说面向过程的一些做法也让他看不到懂呢?

       所以我为什么坚持要让设计和代码面向对象呢?因为用.net本是是面向对象的开发库,而用C#做开发的人很多都是面向对象的程序员,所以为了方便交流我们不是应该尽量用面向对象的思路来做开发吗?而且面向对象的思路也不仅仅是写出容易阅读的代码,面向对象的各种好处也不需要我说了吧. 从最开始写机器码,到汇编,高级语言,再到高级语言中出现面向对象语言。面向对象应该是能解决很多问题才出现的吧。

      在这里弱弱反对一下“完全贯彻实用就好,能解决问题就行,给钱就行”的观点,软件工程师总需要有点信仰,有些坚持的吧,如果软件不仅仅只是你混饭吃的工具的话,而且就算是工具,你也不能让你的工具随便让人动不是吗。 小小程序员的一点感慨,贻笑大方了。

posted on 2010-10-30 15:07  xx念  阅读(1597)  评论(2编辑  收藏  举报