史上最最佳软件开发实践指导
2013-03-01 12:52
267 查看
英文原文:Best Best Practices Ever
每过一段时间,我都能读到一些好东西,它是如此的深刻见解,写的如此的清晰,如此的条理,我必须把它收录进我的个人“史上最佳”圣物集里。最近,我新收录了一篇,非常棒的一篇叫做《Best Practices for Scientific Computing》的文章,我希望每个来读本文的读者都找个时间读读它。我在这里列出它的要点,是要鼓励你去阅读完整的全文。写的真是非常好。
给人写程序,而不是给计算机。
一个程序,对于阅读它的人来说,不应该要求读者一次性的在大脑里加载过多的背景/相关知识。
命名需要一贯、明确、有意义
代码风格和格式要统一一致
软件开发中的各种工作都要分割成 1 小时左右的任务
重复性的工作自动化。
让计算机去做重复性的工作
把最近使用过的命令存到一个文件里,以备复用
使用编译工具来自动化系统流程
用计算机做历史记录
用软件工具来自动跟踪计算机的工作
逐步改进。
每次做一小步,及时获得反馈,及时纠正
使用版本控制。
使用一个版本控制系统
所有由手工创建的东西都要放到版本控制系统里
不要重复自己(或他人)。
系统中的每一段数据都要有一个权威的单一的存在
代码应该模块化复用,而不是考来粘去
复用代码,而不是重写代码
准备好对付错误的方法
在程序中增加断言,检查它们的各种操作
使用现成的单元测试框架
测试程序时借鉴所有的可用的经验
把 bug 做成测试用例
使用一个有代码指令的调试工具
只在软件能正确的工作后才可优化。
使用监控工具找到瓶颈
尽可能的用高级语言写程序
文档里描述的应该是设计思路和目的,而不是技术细节。
描述接口和原因,而不是实现
重构代码,而不是注释解释运行原理
引用其它程序时嵌入其它程序的文档
协作
代码合并前进行代码审查
当帮带新成员或解决特别诡异的问题时使用结对编程
我要额外提到的是这个:
11. 维新旧代码。
如果你还在犹豫不决是否去看那篇文章,那你先去看看它里面列出的引用 67 部关于计算机的著作和文章。正如我说的,这篇文章是“史上最佳”。
每过一段时间,我都能读到一些好东西,它是如此的深刻见解,写的如此的清晰,如此的条理,我必须把它收录进我的个人“史上最佳”圣物集里。最近,我新收录了一篇,非常棒的一篇叫做《Best Practices for Scientific Computing》的文章,我希望每个来读本文的读者都找个时间读读它。我在这里列出它的要点,是要鼓励你去阅读完整的全文。写的真是非常好。
给人写程序,而不是给计算机。
一个程序,对于阅读它的人来说,不应该要求读者一次性的在大脑里加载过多的背景/相关知识。
命名需要一贯、明确、有意义
代码风格和格式要统一一致
软件开发中的各种工作都要分割成 1 小时左右的任务
重复性的工作自动化。
让计算机去做重复性的工作
把最近使用过的命令存到一个文件里,以备复用
使用编译工具来自动化系统流程
用计算机做历史记录
用软件工具来自动跟踪计算机的工作
逐步改进。
每次做一小步,及时获得反馈,及时纠正
使用版本控制。
使用一个版本控制系统
所有由手工创建的东西都要放到版本控制系统里
不要重复自己(或他人)。
系统中的每一段数据都要有一个权威的单一的存在
代码应该模块化复用,而不是考来粘去
复用代码,而不是重写代码
准备好对付错误的方法
在程序中增加断言,检查它们的各种操作
使用现成的单元测试框架
测试程序时借鉴所有的可用的经验
把 bug 做成测试用例
使用一个有代码指令的调试工具
只在软件能正确的工作后才可优化。
使用监控工具找到瓶颈
尽可能的用高级语言写程序
文档里描述的应该是设计思路和目的,而不是技术细节。
描述接口和原因,而不是实现
重构代码,而不是注释解释运行原理
引用其它程序时嵌入其它程序的文档
协作
代码合并前进行代码审查
当帮带新成员或解决特别诡异的问题时使用结对编程
我要额外提到的是这个:
11. 维新旧代码。
如果你还在犹豫不决是否去看那篇文章,那你先去看看它里面列出的引用 67 部关于计算机的著作和文章。正如我说的,这篇文章是“史上最佳”。