architect's dream, developer's nightmare
2004年12月29日 #
现在模式和架构是个热门话题,也来凑个热闹。
模式和架构属于较高层次的应用,但并不是非学不可。 出现下列情形时,当不学: . 程序员初学者,不学。并非学不会,而是不要被模式禁锢了自己的头脑。 . 为扬名立万填补知识空白,不学 . 不写代码,不走程序员之路者,不学 . 无恒心、信心和热情者,不学
不要期望优雅的代码里能到处看到模式的应用。模式就像钻石,镶满钻石的东西好看,未必好用。 当你准备用某个模式的时候,如果有下列情形,当不用:
. 为模式而模式,不用 . 为扬名立万,不用 . 不清楚模式适用场景,不用 . 不清楚模式约束条件,不用 . 翻书才知道怎么写的,不用 . 会增加代码复杂性的,不用 . 会导致代码可读性变差的,不用 . 模式所带来的扩展性和灵活性不可预见的,不用 . 见不到明显益处的,不用 . 同事看不懂,不利于团队交流的,不用
最后用模式要记得写注释,写清名称和出处,足矣。
posted @ 2004-12-29 18:42 msolap 阅读(1016) | 评论 (11) | 编辑
最近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 @ 2004-12-29 18:24 msolap 阅读(704) | 评论 (0) | 编辑
Powered by: 博客园 Copyright © msolap