16.1 在对立关系中事先确定侧重于哪一方
对立关系指的是,选择两个策略性目标之一,则无法追求另一个目标的实现。使用C语言编写程序时,经常会陷入这种两难的对立关系中。使用位运算符有助于提高处理速度,但同时会损坏系统安全。代码长度缩短后,可读性相应变差。
在这种对立关系中,侧重于哪一方面、牺牲哪一方面的选择在一定程度上与价值观有关。标准的做法是,应当事先规定在对立关系中选择侧重于哪一方面。大型项目更应如此。如果一个项目中有的部分侧重于性能,有的侧重于其他方面,最后的结果往往是竹篮打水一场空,甚至可能严重降低生产效率。因此,项目经理、系统架构师、系统分析师、程序员、码农等应该逐一列举处于对立关系的各个对象,从中选择更希望侧重的一个方面,并在项目流程中始终坚持自己的选择。
16.2 慎重采用最新工具
最初学习编程时,我曾经在工作中尝试使用各种工具。与现在相比,当时的开发环境非常简陋,甚至连最简单的编辑器都很少见。之后,我尝试使用过各种编辑器,前辈们起初会指责我只知道挑剔工具、做表面功夫。后来他们发现,我使用新工具后,生产效率大幅度提高,于是开始三三两两地和我一起使用最新的编辑器。现在,优秀的开发工具种类繁多。使用不同IDE可能导致生产效率出现明显差异。因此,我们应该抱着挑剔的态度看待使用的工具。
16.3 记住所有标准库
C语言提供的库很多,没必要记住全部。使用集成开发环境可以轻松查找需要的库,但如果可以记住库提供的各函数使用方法,可以明显提高生产效率。
16.4 最大程度划分模块
16.5 明确区分术语
沟通时直接影响生产效率的一个重要因素,沟通顺畅才能有更高的生产效率。如果术语定义不够明确,就很难实现顺畅沟通。
因此,开发多人参与的项目前,应该先统一术语。可以在黑板上写下可能用到的术语,或者编撰一本指南。甚至可以直接购买一本术语词典,并参照其中内容统一术语使用规范。
16.6 明确区分结构体、枚举体、共用体
术语 | 定义 |
---|---|
结构体 | 包括结构体数据类型和结构型变量 |
结构体数据类型 | 用struct声明的用户自定义数据类型,可以简称为结构型 |
结构型变量 | 用于称呼结构体数据类型声明的变量 |
枚举体 | 包括枚举体数据类型和枚举型变量 |
枚举体数据类型 | 用enum声明的用户自定义数据类型,可以简称为枚举型 |
枚举型变量 | 用于称呼枚举体数据类型声明的变量 |
共用体 | 包括共用体数据类型和共用型变量 |
共用体数据类型 | 用union声明的用户自定义数据类型,可以简称为共用型 |
共用型变量 | 用于称呼共用体数据类型声明的变量 |
16.7 明确区分概念
16.8 明确区分对象、类、实例
术语 | 定义 |
---|---|
对象 | 包括类和实例 |
类 | 按照生成对象的语法定义的用户自定义数据类型,相当于实例的设计图 |
实例 | 根据类生成的实体。虽然经常将实例称为对象,但二者实际上是不同的概念,应该区分对待。比较好的方法是用“实体”代替“对象”这一称呼,或直接称其为实例 |