msolap

对技术保持足够的敬畏

导航

模式和招式

    最近blog里有很多人在谈论模式(pattern)和架构(architecture),其中不乏刚入程序员行列的同学,目标都是希望提升自己的开发水平。由于担心初学者过于看重模式,有舍本求末之嫌,特写此文。


模式和招式
    不知有多少程序员学过武术,其中有句话:“力不敌法,法不敌功”。意思是说:使蛮力敌不过会招法的,会招法敌不过基本功 厚实的。其实编程也是如此,如果放着基本功不练,拼命研究模式,最终只是一身花架子。

见过很多国内大型软件企业程序员的代码,很少有上乘表现的。主要原因我觉得和国情有关:
1)业务和编码一把抓,结果编程技术平平,却个个精通业务;2)急功近利,为赶工期不顾质量;其结果就是忽视基本功的学习和练习。


什么是软件领域的基本功?
Steve McConnell在《After the Gold Rush》一书中提到:
-- 一个人要成为某一领域的专家,大致需要五万个知识点。在那些成熟的领域,通常需要10年才能获得足够的知识点。
-- 其中超过一半的知识点会随着时间的流逝而废弃,如C++、JAVA、Perl、HTML、LINUX、Microsoft Windows。
-- 剩下的那些被称为Stable Core的,则会使你终生受用。
-- 哪些是软件领域的Stable Core?
 Software Requirements Engineering
 Software Design
 Software Construction
 Software Testing
 Software Evolution and Maintenance
 Software Configuration Management
 Software Quality Engineering
 Software Engineering  Management
 Software Engineering Infrastructure
 Software Enineering Process
-- 不用精通所有的上述领域,但至少所有的都要了解,同时要精通其中某一些。
基本功便是Stable Core中和我们工作内容相关的知识点。
 

试举一些和编码(Software Construction)相关的基本功:
. 标识符命名,变量类型选择
. 好的编码风格
. 基本的算法,如表驱动、树遍历、排序等
. 基本的编程技巧,如Assert、Trace等

(这些基本功不能光知道不练)

程序员从哪里入手?
有本老书一直觉得很受用:《Code Complete》(中文版《代码大全》)
最近出了第二版,内容大致相同,是学习编码(Software Constuction)基本功的宝典。

学习模式没有什么不好,但有个时机和火候的问题。就像练武术,先得从站桩、盘架子开始,基本功扎实后,再学招法是事半功倍。照我看,前三年不用专门学什么模式。多写代码,多看代码,不断改进自己的代码;到时自然水到渠成。

posted on 2004-12-29 18:24  msolap  阅读(1067)  评论(0编辑  收藏  举报