史上最最佳软件开发实践指导

jopen 12年前

史上最最佳软件开发实践指导

        英文原文:Best Best Practices Ever

        每过一段时间,我都能读到一些好东西,它是如此的深刻见解,写的如此的清晰,如此的条理,我必须把它收录进我的个人“史上最佳”圣物集里。最近,我新收录了一篇,非常棒的一篇叫做《Best Practices for Scientific Computing》的文章,我希望每个来读本文的读者都找个时间读读它。我在这里列出它的要点,是要鼓励你去阅读完整的全文。写的真是非常好。

  1. 给人写程序,而不是给计算机。
    1. 一个程序,对于阅读它的人来说,不应该要求读者一次性的在大脑里加载过多的背景/相关知识。
    2. 命名需要一贯、明确、有意义
    3. 代码风格和格式要统一一致
    4. 软件开发中的各种工作都要分割成 1 小时左右的任务
  2. 重复性的工作自动化。
    1. 让计算机去做重复性的工作
    2. 把最近使用过的命令存到一个文件里,以备复用
    3. 使用编译工具来自动化系统流程
  3. 用计算机做历史记录
    1. 用软件工具来自动跟踪计算机的工作
  4. 逐步改进。
    1. 每次做一小步,及时获得反馈,及时纠正
  5. 使用版本控制。
    1. 使用一个版本控制系统
    2. 所有由手工创建的东西都要放到版本控制系统里
  6. 不要重复自己(或他人)。
    1. 系统中的每一段数据都要有一个权威的单一的存在
    2. 代码应该模块化复用,而不是考来粘去
    3. 复用代码,而不是重写代码
  7. 准备好对付错误的方法
    1. 在程序中增加断言,检查它们的各种操作
    2. 使用现成的单元测试框架
    3. 测试程序时借鉴所有的可用的经验
    4. 把 bug 做成测试用例
    5. 使用一个有代码指令的调试工具
  8. 只在软件能正确的工作后才可优化。
    1. 使用监控工具找到瓶颈
    2. 尽可能的用高级语言写程序
  9. 文档里描述的应该是设计思路和目的,而不是技术细节。
    1. 描述接口和原因,而不是实现
    2. 重构代码,而不是注释解释运行原理
    3. 引用其它程序时嵌入其它程序的文档
  10. 协作
    1. 代码合并前进行代码审查
    2. 当帮带新成员或解决特别诡异的问题时使用结对编程

        我要额外提到的是这个:

        11. 维新旧代码。

        如果你还在犹豫不决是否去看那篇文章,那你先去看看它里面列出的引用 67 部关于计算机的著作和文章。正如我说的,这篇文章是“史上最佳”。