管理代码库的规则包括源文件存储位置的规则、关于代码格式的规则、关于命名、模式、异常和线程的规则等。
制定规则的目的是鼓励好的行为和劝阻坏的行为。好和坏取决于组织关心什么。随着组织的发展,既定的规则和指导方针形成了编码的通用词汇表。共同的词汇表使工程师们能够集中精力于他们的代码需要表达什么,而不是如何表达。规则给了我们广泛的杠杆作用,将共同的发展模式推向期望的方向。
定义规则时,不要问我们应该拥有哪些规则,而要问我们要达成什么目标。
我们需要维护一个在时间和规模上具有韧性的工程环境。
我们的规则是管理好开发环境的复杂性,保持代码库的可管理性,同时保证工程师高效地工作。由权威标准提供的一致性和减少冲突的好处最终会获得认可。
指导我们制定规则的总体原则必须:1、发挥规则的作用。2、为读者优化。3、保持一致性。4、避免容易出错和出乎意料的构件。5、必要的时候要服从实际情况。
规则必须发挥作用。规则是有成本的,记忆和维护都需要成本。所以那些不言而喻的规则就不用包含了。
规则为代码的读者优化,而不是为作者。代码阅读的频率高于修改的频率。
代码库与办公流程一样,都需要保持一致性。一致性使工程师进入代码库中不熟悉的部分,也能迅速开展工作。当代码库的风格和规范保持一致时,工程师可以聚焦于关注代码要完成什么,而不是代码的呈现方式。一致性是对规模化的有力支持,代码的一致性使得构建新代码更容易。一致性降低团队间的学习成本,增强人员调整能力。一致性保证了随着时间推移对人员流动的适应性。
风格指南对一些出乎意料的、不寻常或棘手的构造函数的使用方式进行了限制。
愚蠢的一致性是人类思想里的妖怪。切合实际才是更高的原则。性能很重要时可牺牲一致性和可读性。
风格指南包含三类准则:避免危险的规则、执行最佳实践的规则、确保一致性的规则。
避免危险包括避开导致诡异缺陷的语言特性。
最佳实践有助于保持代码库的健康和可维护性。
构建一致性是为命名约定缩进间距等设置统一的标准。
修改规则需要有证据支持。我们花时间讨论相关的利弊和潜在后果。记录某个具体决策背后的推理,在情况发生变化时重新评估。我们需要更新规则的流程。大多数风格指南的改变是从社区讨论开始的。
规则尽可能自动化强制执行。