核心指南不是规则

主要观点:

  • 指南(guidelines)和规则(rules)有区别,将指南简化为规则会使代码更难理解。
  • 规则对开发者来说更方便,但可能导致代码质量下降。
  • 以 C++ Core Guidelines 为例,说明了不同规则和指南的特点及相互关系。
  • 指南在不同情境下可能相互矛盾,应思考其原理和适用性,而非盲目遵循。

关键信息:

  • Captain Barbossa 认为《加勒比海盗》中的“法典”更像是指南而非规则。
  • 规则方便但可能限制灵活性,指南更注重原因和例外。
  • C++ Core Guidelines 中的多个规则和指南,如 C.20 的“零规则”、C.21 的“五规则”等。
  • 对于一些服务类,持有引用数据成员可能更合适,但可能违反指南引发问题。

重要细节:

  • “零规则”:能避免定义默认操作就不定义。
  • “五规则”:定义或删除任何复制、移动或析构函数时,应全部定义或删除。
  • C.12 指南:在可复制或可移动类型中,不要使数据成员为 const 或引用。
  • 服务类中常持有对其他服务类的引用,可能违反某些指南。

总结:强调了区分指南和规则的重要性,以 C++ Core Guidelines 为例说明了两者的差异及在实际编程中的情况,提醒开发者应理性对待指南,不盲目遵循。

阅读 18
0 条评论