4.3 Your Location on the Technology Wave
理解“在一种语言上编程”和“深入一种语言去编程”的区别,对于理解本书是至关重要的。大多数重要的编程原则并不依赖特定的语言,而依赖于你使用语言的方式。如果你使用的语言缺乏你希望用的构件,或者倾向于出现其他种类的问题,那就应该试着去弥补他。发明你自己的编码约定、标准、类库以及其他改进措施。
CHECKLIST
“构建”有一部分准备工作,就是决定在这么多的可选的时间方法中,你想要强调哪些。下面的核对表总结了在“构建”过程中,应该有意识的使用或者排斥的特定编程实践。
- 编码
- 你有没有确定,多少设计工作要预先进行,多少设计工作在键盘上进行(在编码的同时)?
- 你有没有规定诸如名称、注释、代码格式等“编码约定”?
- 你有没有规定特定的由软件架构确定的编码时间,比如如何处理错误条件、如何处理安全性事项、对于类接口有哪些约定、可重用的代码遵循哪些标准、在编码时考虑多少性能因素?
- 你有没有找到自己在技术浪潮中的位置,并相应调整自己的措施?如果必要,你是否知道如何“深入一种语言去变成”,而不受限于语言(仅仅“在一种语言上变成”)?
- 团队工作
- 你有没有定义一套集成工序——即,你有没有定义一套特定的步骤,规定程序在把代码 check in 到代码仓库主分支之前,必须履行这些步骤?
- 程序员是结对变成、还是独自编程,或者这二者的某种结合?
- 质量保证
- 程序员在编写代码之前,是否先为止编写测试用例?
- 程序会为自己的代码写单元测试吗(无论先写还是后写)?
- 程序员在 check in 代码之前,会用调试器单步跟踪整个代码流程吗?
- 程序员在 check in 代码之前,是否进行集成测试?
- 程序员会 review 或检查别人的代码吗?
- 工具
- 你是否选用了某种版本控制工具
- 你是否选定了一种语言,以及语言的版本或编译器版本?
- 你是否选择了某个编程框架,或者明确地决定不使用编程框架?
- 你是否决定允许使用非标准的语言特性?
- 你是否选定并拥有了其他将要用到的工具——编辑器、重构工具、调试器、测试框架、语法检查器等?
Key Point
- 每种编程语言都有其优点和弱点。要知道你使用的语言的明确优点和弱点。
- 在开始编程之前,做好一些约定(convention)。“改变代码使之符合这些约定”是近乎不可能的。
- “构建的实践方法”的种类比任何单个项目能用到的要多。有意识地选择最适合你的项目的实践方法。
- 问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制?请记得“深入一种语言去编程”,不要仅“在一种语言上编程”。
- 你在技术浪潮中的位置决定了哪种方法是有效的——甚至是可能用到的。确定你在技术浪潮中的位置,并相应调整计划和预期目标。