高质量编程

这是一个大问题, 不是一两句话能说得清楚的, 也不是一朝一夕能做得到的. 现在回头看看自己以前写的代码, 有些很是脸红, 忍不住想要拿过来重写一遍. 我想现在我再来写的话, 会比当初质量好很多. 那么几年以后, 我再回首看现在自己写的代码, 会不会一样感到脸红呢. 我不敢断言, 不过前事不忘, 后事之师, 应该会少犯很多已经犯过的错误.

诚然, 这是一个成长的过程, 中间会走一些弯路, 与其步入岐途, 再浪子回头, 不如早作准备,找好正确的方向一直走下去.

早先以为通晓一门语言, 勤加操练, 再看看诸如Effective C++之类的书, 就会写出高质量的程序. 这没什么错,只不过这只是必要条件,而非充分条件.

那么,如何才能写出高质量的程序呢? 我无法给出准确的最佳答案, 只是有一点自己的体会

1. 随大流
软件编程需要创新, 但在代码风格上应该随大流, 遵循一般的代码风格和命名标准, 在此基础上不断总结丰富
比如Java中, 一般在Sun的java code convention上, 我加上了一些自己和许多程序常用的标准
命名: XXXFace, XXXImpl, XXXWrapper, XXXFactory

2. 用好轮子
软件编程中流行着这样一句话,"不要重复发明轮子", 这是经验之谈, 对于没有特殊要求的通用类模块, 还是不必自搞一套. 对于轮子, 也要精心挑选, 用的人多, 用的时间长. 不必自己做轮子, 但要充分了解轮子, 杀鸡焉用牛刀, 杀牛也千万别只带把裁纸刀. 实在没有适合的轮子, 只有DIY了, 对于自己做过的轮子, 也要精心打磨, 以备不时之需

3. 臭皮匠
三个臭皮匠, 一般来说无论如何也是比不上一个诸葛亮的. 在design和code review时, 找一个相关领域的专家
找不在到诸葛亮, 退而求其次也要找几个臭皮匠

4. 有章可循, 有案可查
记得以前做过ISO9002的培训, 印象最深的就是..., 版本控制的重要性, 最好加上持续集成
写下Check list和常犯的错误,时时检查,处处小心, 如履薄冰, 习惯了就好了

5. 模式与范例: 他山之石, 可以攻玉
多多看看别人写的代码, 特别是牛人写的, 大名鼎鼎的开源程序,经常学习, 及时总结模式

6. 工具: 工欲善其事,必先得其器
IDE:Eclipse, Visual Stdio 
检查工具valgrind, checkstyle, findbugs, pmd
辅助工具web developer, http watch
调试工具gdb, windbg

7, 测试加调试
关键路径,次要路径测个遍, 单步断点走几轮

8. 设计求精
质量从需求分析和设计抓起.
多多用原型程序验证想法, "穿刺"

9. 算法
从小工到专家,仅仅见多识广是不够的,招数虽多,不懂内功, 终归成不了高手
把计算机程序设计当作艺术来作,才有高质量的作品

10.运用之妙, 存乎一心
在工期紧,任务重的情况下,又快又好,虽不能两全,至少不能自毁声誉
posted @ 2009-08-20 20:35  寻道  阅读(161)  评论(0)    收藏  举报