代码改变世界

【原】一个程序员要经历的阶段

2010-06-12 09:51  bugfly  阅读(429)  评论(4编辑  收藏  举报

    自高三开始迷上了编程,起因是一个同学用Basic写出了一个小游戏,觉得很新奇,乱七八糟的代码竟然可以写出一个可以玩的东西,自此我和程序结下了渊源了。对程序的观点好多,如果按程序的热情来分,大致可以说一个程序员要经历 兴趣式编程-任务式编程-厌倦式编程-重生式编程-专业式编程。而这些阶段必然会在厌倦式编程分出你是否会继续编程,有一部分挺过来了,有一部分转行了,见怪不怪了。兴趣只不过是一个先导,它并不能让你度过厌倦编程,因为思想的解放是最抽象的东西,每一次阶段的跳跃都依赖思想的觉悟,感兴趣是因为新奇,任务形式地看待编程是因为编程一直被认为是一门普通学科,而厌倦编程是因为你的编程世界混沌不堪,当你觉得自己不适合编程,而恰恰相反这个时候才是一个程序员成长的开始,这才是第一道程序门槛,话说回来,要跨越这个门槛很难,至于怎么跨越,这里我先不谈,下一段我将以一个程序世界的观点去讲述各个阶段。

    站在行业的角度,程序员的编程周期分为:面向过程-简单的面向对象-面向抽象-面向测试-?

    其实你要说什么是面向过程,我真的拿不出一个很好的文字描述来说服每一个人,而可以肯定的是,面向过程与面向对象的交界点是封装,所以我们可以肤浅地认为面向过程要过度到面向对象,要学会封装,而这里的封装是很浅显,在面向过程过度到简单面向对象,并不是很难,或许一门面向对象语言就可以令你过度了,要不需要太多的代码量和阅读量,因为时代赋予了你这个特权成为面向对象的一员,而不要认为当你学会封装已有的程序就是面向对象高手,对于OOP高手的标准我就不下定义,我把面向对象要经历的阶段列出来:爱用封装-爱用继承-爱用多态-学会真正的封装。

   正如你看到的,封装是面向对象的开始,而下一阶段你要经历继承的洗礼,当你经历了继承复用带来的恶果后,你会迷上多态,而想过度到面向抽象,你就必需学会正真的封装,至于为什么呢?我先不谈WHY。所谓爱用继承,大多数原因是过程化思想的影响,我觉得大部分程序员都会经历,而且是必然要经历的,疯狂爱上继承复用带来的好处,到最后被臃肿的继承层次所困扰,甚至无法管理继承结构,这个小阶段要过度到多态必然要有一定的代码量,而所谓代码量是你接受新观点的基础,它并不是衡量你思想境界的标准,所以我很赞成做了一个项目就看书,收获必然比你不断做项目或者单纯看书要好很多。而爱上多态这个小阶段也没什么好说的,我认为没什么亮点要对大家说,而刚才我说要过度到面向抽象,学会真正的封装是基础,或许你会笑我,封装谁不会啊?面向对象的开始不就是封装么?恩,对的,面向对象的开始是封装,而封装意义是什么你能抚心自问嘛?我想大多数人不能说出来,封装的意义在于内聚性!而内聚性是衡量一个类的职责是否集中的标准,而内聚性和耦合性是相对的,从程序整体来看,内聚性高,必然耦合性就低,内聚性体现在类(模块)自身,而耦合性体现在类与类或者说模块与模块之间的依赖关系。不难看出,一个类是否封装的好将会影响整个程序的维护,差的封装在程序越往后期,问题就越明显,牵一发动全身的感觉我想你们都感受过吧,甚至不想修改自己写的东西,对吧?OK这就是你不会封装的后果,在我看来封装是OOP的精髓,而这时你会问怎么才懂得封装?呵呵,我当然知道,而且深刻地知道,但我在这文章不会描述,就当我卖一个关子吧,因为我想看看各位看官是否想真的突破这一关卡,所谓不耻下问。我们继续,面向抽象,恩这个阶段很好,当你到达这个阶段,你就会感受到编程的艺术形态了,什么设计模式,面向接口编程的高谈在你看来已经不再高深了,这个阶段回头看设计模式,势如破竹,这句话是我说的,理解抽象再去看模式和磨刀砍柴是一样道理。而这个阶段你将会不断地接受新技术,什么框架,IOC,AOP,ORM,MVC等等都是你会学习的东西,而你的学习速度一次比一次快,你会发现自己对知识的饥渴感已经不能自拔了,而这个阶段英语这门学科的价值开始体现了,因为很多新技术和新问题已经在你脑中冒出来了,比较前缘的东西都是通过国外的blog和文章发现的,对于英语是否要认真学习我就不多谈了。而很不幸,我还处于面向抽象过度到面向测试这个瓶颈,最近正在着手这方面的技术研究,望能快速突破,再和大家分享经验,待续。