4.1选择编程语言
研究表明,编程语言的选择从多个方面影响生产率和代码质量:
- 程序员使用熟悉的语言时,生产率比使用不熟悉的语言时高。
- 使用高级语言的程序员能比使用较低级语言的程序员达到更好的生产率和质量。
- 某些语言更能表达编程中的各种概念。
- 程序员同样受到所用编程语言的影响。
每种编程语言都有优缺点,要知道你使用的语言的明确优缺点。
4.2编程约定
在高质量软件中,你可以看到“架构的概念完整性”与“其底层实现”之间的关系。“实现”必须与(指导该实现的)“架构”保持一致,并且这种一致性是内在的、固有的。这正是变量名称、类的名称、子程序名称、格式约定、注释约定等这些针对“构建活动”的知道方针的关键所在。
成功便成的一个关键就在于避免随意地变化,这样你的大脑可以专注于那些真正需要的变化。
在编程开始之前,做好一些约定。“改变代码使之符合这些约定”是近乎不可能的。
4.3你在技术浪潮中的位置
(由于本书写的比较早,感觉书中这部分前半段观点在现在来看有点多余P66)
两种编程方式
- 在一种语言上编程:程序员将他们的思想限制于“语言直接支持的那些构件”。
- 深入一种语言去编程:程序员首先决定他们要表达的思想是什么,然后决定如何使用特定语言提供的工具来表达这些思想。
大多数重要的编程原则并不依赖特定的语言,而依赖于你使用语言的方式。如果你使用的语言缺乏你希望用的构件,或者倾向于出现其他种类的问题,那就应该试着去弥补它。发明你自己的编码约定、标准、类库以及其他改进措施。
4.4选择主要的构建实践方法
核对表:主要的构建实践
编码
- 你有没有确定,多少设计工作将要预先进行,多少设计工作在键盘上进行(在编写代码的同时)?
- 你有没有规定诸如名称、注释、代码格式等“编码约定”?
- 你有没有规定特定的由软件构架确定的编码实践,比如如何处理错误条件、如何处理安全性事项、对于类接口有哪些约定、可重用的代码遵循哪些标准、在编码时考虑多少性能因素等?
- 如果有必要,你是否知道如何“深入一种语言去编程”,而不是受限于语言(仅仅“在一种语言上编程”)?
团队工作
- 你有没有定义一套集成工序——即,你有没有定义一套特定的步骤,规定程序员在吧代码check in(签入)到主源码(代码库)中之前,必须履行这些步骤?
- 程序员是结对编程、还是独自编程、或者这二者的某种组合?
质量保证
- 程序员在编写代码前,是否先为之编写测试用例?
- 程序员会为自己的代码写单元测试吗?
- 程序员在check in代码之前,会用调试器单步跟踪整个代码流程吗?
- 程序员在check in代码之前,是否进行集成测试?
- 程序员会复审或检查别人的代码吗?
工具
- 你是否选用了某种版本控制工具?
- 你是否选定了一种语言,以及语言的版本或编译器版本?
- 你是否选择了某个编程框架,或者明确地决定不适用编程框架?
- 你是否决定允许使用非标准的语言特性?
- 你是否选择并拥有了其他将要用到的工具——编辑器、重构工具、调试器、测试框架、语法检查器?