代码大全 - Chapter4 - 关键的“构建”决策

4.3 Your Location on the Technology Wave

理解“在一种语言上编程”和“深入一种语言去编程”的区别,对于理解本书是至关重要的。大多数重要的编程原则并不依赖特定的语言,而依赖于你使用语言的方式。如果你使用的语言缺乏你希望用的构件,或者倾向于出现其他种类的问题,那就应该试着去弥补他。发明你自己的编码约定、标准、类库以及其他改进措施。

CHECKLIST

“构建”有一部分准备工作,就是决定在这么多的可选的时间方法中,你想要强调哪些。下面的核对表总结了在“构建”过程中,应该有意识的使用或者排斥的特定编程实践。

  • 编码
    • 你有没有确定,多少设计工作要预先进行,多少设计工作在键盘上进行(在编码的同时)?
    • 你有没有规定诸如名称、注释、代码格式等“编码约定”?
    • 你有没有规定特定的由软件架构确定的编码时间,比如如何处理错误条件、如何处理安全性事项、对于类接口有哪些约定、可重用的代码遵循哪些标准、在编码时考虑多少性能因素?
    • 你有没有找到自己在技术浪潮中的位置,并相应调整自己的措施?如果必要,你是否知道如何“深入一种语言去变成”,而不受限于语言(仅仅“在一种语言上变成”)?
  • 团队工作
    • 你有没有定义一套集成工序——即,你有没有定义一套特定的步骤,规定程序在把代码 check in 到代码仓库主分支之前,必须履行这些步骤?
    • 程序员是结对变成、还是独自编程,或者这二者的某种结合?
  • 质量保证
    • 程序员在编写代码之前,是否先为止编写测试用例?
    • 程序会为自己的代码写单元测试吗(无论先写还是后写)?
    • 程序员在 check in 代码之前,会用调试器单步跟踪整个代码流程吗?
    • 程序员在 check in 代码之前,是否进行集成测试?
    • 程序员会 review 或检查别人的代码吗?
  • 工具
    • 你是否选用了某种版本控制工具
    • 你是否选定了一种语言,以及语言的版本或编译器版本?
    • 你是否选择了某个编程框架,或者明确地决定不使用编程框架?
    • 你是否决定允许使用非标准的语言特性?
    • 你是否选定并拥有了其他将要用到的工具——编辑器、重构工具、调试器、测试框架、语法检查器等?

Key Point

  • 每种编程语言都有其优点和弱点。要知道你使用的语言的明确优点和弱点。
  • 在开始编程之前,做好一些约定(convention)。“改变代码使之符合这些约定”是近乎不可能的。
  • “构建的实践方法”的种类比任何单个项目能用到的要多。有意识地选择最适合你的项目的实践方法。
  • 问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制?请记得“深入一种语言去编程”,不要仅“在一种语言上编程”。
  • 你在技术浪潮中的位置决定了哪种方法是有效的——甚至是可能用到的。确定你在技术浪潮中的位置,并相应调整计划和预期目标。