《构建之法》第四章读书笔记

两人合作

代码规范可以分为两个部分:

  • 代码风格规范。主要是文字上的规定,看似表面文章,实际非常重要。
  • 代码设计规范。牵涉到程序设计、模块之间的关系、设计模式等方方面面通用的原则。

在一个团队中,使用统一的代码规范非常重要。

代码风格规范

代码风格的原则是:简单,易读,无二义性。采取何种代码规范要看这种代码规范能否让程序员更好的理解和维护程序。

代码风格规范具体包括以下几点:

  • 缩进。推荐使用四个空格进行缩进,最好在编辑器中将Tab键定义为四个空格,这样可以避免Tab键在不同情况下显示不同的问题,并使程序有良好的阅读体验。
  • 行宽。最好对行宽作出限制,按照现代普遍使用的屏幕尺寸,可以考虑将行宽限制为100个字符。
  • 括号。在复杂的表达式中,使用括号表示逻辑优先级。
  • 断行与空白的{}行。推荐每个都单独占一行。
  • 分行。不要把多条语句放在一行上,更严格的说不要把多个变量定义在一行上。
  • 命名。命名要注意几条关键原则,简单来说就是确保包含必要信息,避免过多的描述。
  • 下划线。下划线用来分隔变量名字中的作用于标注和变量的语义。
  • 大小写。通用的做法是,类型、类、函数名多有单词的第一个字母都大写,变量名第一个单词全部小写,其他单词首字母大写。
  • 注释。复杂的注释放在函数头,不做不必要的注释,注释中应只使用ASCII字符。

代码设计规范

代码设计规范不只是程序书写格式的问题,而且牵涉到程序的设计、模块之间的关系、设计模式等方方面面。这里主要讨论通用的原则。

  • 函数。关于函数,最重要的一条原则就是:只做一件事,并且要做好。
  • goto。函数最好有单一的出口,为了达到这一目的,可以使用goto。
  • 错误处理。首先要验证参数的正确性,当认为一件事肯定如何时,可以使用断言。
  • 处理c++中的类。使用类来封装面向对象的概念和多态;避免传递类型实体的值,而用指针传递,也就是说简单的数据类型没有必要用类来实现;对于有显示构造和析构的类,不要创建全局的实体。
  • 类还是结构体。如果只是数据的封装,用结构体即可。
  • 按照这样的顺序来说明类中的成员:public、protected、private。
  • 数据成员。数据类型的成员用m_name说明;不使用公共的数据成员,要用inline访问函数,这样可兼顾封装和效率。
  • 虚函数。使用虚函数来实现多态;尽在很有必要时使用虚函数;如果一个类型要实现多态,在基类中的析构函数应该是虚函数。
  • 构造函数。不要再构造函数中做复杂的操作,简单初始化数据称成员即可;构造函数不应返回错误,把可能出错的操作放到HrInit()或FInite()中。
  • 析构函数。把所有的清理工作放在析构函数中;同时析构函数也不应出错。
  • new和delete。实现自己的new/delete可以方便地加上自己的跟踪和管理机制;检查new的返回值;释放指针时不用检查NULL。
  • 运算符。运算符不要做标准语义外的任何操作;运算符的实现应非常高效,如果操作复杂,定义一个单独的函数,如果拿不定主意,用成员函数而不要用运算符。
  • 异常。异常不能跨过DLL或进程的边界来传递信息。
  • 类型继承。仅在必要时使用类型继承;用const标注只读的参数;用const标注不改变数据的函数。

代码复审

代码复审的目的在于找出代码的编码错误、格式错误、逻辑错误、算法错误、潜在的错误和回归性错误、发现可能需要改进的地方、互相教育互相学习。


代码复审步骤如下:

  1. 代码必须在最严格的编译警告等级下成功编译,同时编译debug|retail版本。
  2. 程序员必须测试过代码,最好是单步执行。
  3. 程序员必须提供新的代码和文件差异分析工具。
  4. 面对面复审中,开发者控制流程,讲述修改的前因后果,复审者可以打断并提出疑问。
  5. 复审者必须逐一提供反馈意见。
  6. 开发者必须保证让所有的问题得到满意的解释或解答。
  7. 对于复审的结果,双方必须达成一致的意见。

代码复审的核查表要包括概要部分、设计规范部分、代码规范部分、具体代码部分、效能、可读性、可测试性这几个条目。

结对编程

结对编程可以实现不间断的复审,能减少程序错误,提高程序质量,节省以后修改和测试的时间。在结对编程中要注意正确的给予反馈。

转载于:https://www.cnblogs.com/thechosenone95/p/10306325.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值