选择主要的构建实践方法(转)
“构建”有一部分准备工作,就是决定在这么多的可选的实践方法中,你想要强调哪些。某些项目使用结对编程以及测试驱动开发,而其他项目使用单人开发和形式化检查。这两种技术组合都有可能发挥作用,取决于项目的特定环境。
下面的核对表总结了在“构建”过程中,应该有意识地使用或者排斥的特定编程实践。这些实践的细节遍布全书。
Checklist: Major Construction Practices
核对表:主要的构建实践
编码
q 你有没有确定,多少设计工作将要预先进行,多少设计工作在键盘上进行(在编写代码的同时)?
q 你有没有规定诸如名称、注释、代码格式等“编码约定”?
q 你有没有规定特定的由软件架构确定的编码实践,比如如何处理错误条件、如何处理安全性事项、对于类接口有哪些约定、可重用的代码遵循哪些标准、在编码时考虑多少性能因素等?
q 你有没有找到自己在技术浪潮中的位置,并相应调整自己的措施?如果必要,你是否知道如何“深入一种语言去编程”,而不受限于语言(仅仅“在一种语言上编程”)?
团队工作
q 你有没有定义一套集成工序——即,你有没有定义一套特定的步骤,规定程序员在把代码check in(签入)到主源码(代码库)中之前,必须履行这些步骤?
q 程序员是结对编程、还是独自编程,或者这二者的某种组合?
质量保证
q 程序员在编写代码之前,是否先为之编写测试用例?
q 程序员会为自己的代码写单元测试吗(无论先写还是后写)?
q 程序员在check in代码之前,会用调试器单步跟踪整个代码流程吗?
q 程序员在check in代码之前,是否进行集成测试(integration-test)?
q 程序员会复审(review)或检查别人的代码吗?
工具
q 你是否选用了某种版本控制工具?
q 你是否选定了一种语言,以及语言的版本或编译器版本?
q 你是否选择了某个编程框架(framework,如J2EE或Microsoft .NET),或者明确地决定不使用编程框架?
q
q 你是否决定允许使用非标准的语言特性?
q 你是否选定并拥有了其他将要用到的工具——编辑器、重构工具、调试器、测试框架(test framework)、语法检查器等?
Key Points
要点
■ 每种编程语言都有其优点和弱点。要知道你使用的语言的明确优点和弱点。
■ 在开始编程之前,做好一些约定(convention)。“改变代码使之符合这些约定”是近乎不可能的。
■ “构建的实践方法”的种类比任何单个项目能用到的要多。有意识地选择最适合你的项目的实践方法。
■ 问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制?请记得“深入一种语言去编程”,不要仅“在一种语言上编程”。
■ 你在技术浪潮中的位置决定了哪种方法是有效的——甚至是可能用到的。确定你在技术浪潮中的位置,并相应调整计划和预期目标。