代码REVIEW的一般方法

       代码REVIEW的工作是软件工程中不能忽视的工作,是软件质量活动之一,对保障和改善软件工程质量有比较明显的作用,特别是对团队进行开发的软件工程。本文主要以C代码的视角描述CODE REVIEW的一般方法。

一、代码REVIEW前的准备工作

       了解软件的基本架构,软件层次关系以及模块间关系,业务流程的任务划分。这个要求是对设计文档需要比较详细的了解。如果没有详细的设计文档,至少要有比较清楚的业务流程和模块划分。

二、代码REVIEW的一般性检查

1、代码文件和目录的REVIEW

检查软件目录是否安排合理,是否按一定的规则进行,有的是按照软件的层次进行目录的分配,有的是按照功能模块进行目录的分配。比较糟糕的目录结构是按照部门和小组进行分配,对于整个软件系统来讲没有机构的概念,支持层次和模块的概念。检查文件命名是否符合编程规范,让人一看就知道此文件或目录说明了什么。

2、代码头文件的检查

容易犯的错误是代码头文件中,不区分内部使用还是外部使用头文件的包含关系是否按层次

3、函数名称的检查

文件中内部使用函数和外部使用函数,内部使用的函数不应暴露在对外使用的头文件中,内部使用函数名称是否和对外函数名称容易区别,函数命名是否符合编程规范,函数命名中使用的参数检查,是否函数中有太多的参数,是否可以使用结构来进行命名和描述

4、结构和变量

内部使用的结构和对外暴露的结构也要分辨清楚,头文件中只声明对外使用的结构,内部变量和外部变量分清楚,外部变量尽量少用,可以通过函数的方式进行获得。

5、函数体内的变量

是否定义太多的变量,很多时候,在调试中加入测试代码和变量,正式版本没有将多余的部分删除掉,在编译过程中一般都会有警告,可以关注变量没有使用的警告。

6、函数输入参数合法性

函数体内定义外变量,通常就是函数输入参数的检查,特别是空指针的检查,参数值的范围检查,这些都是代码可靠性的必须要进行的工作。

7、变量的初始化

在函数体内部使用的变量,通常都需要进行初始化,给变量一个缺省值,编译器不一定会给变量一个缺省值,定义的指针要赋值空间。

8、检查空间越界

数组下标的越界,指针空间的越界,需要重点关注,memcpy, memset, strcpy等的C函数也需要重点关注,常常犯错误。

9、循环执行体检查

FOR, WHILE, DO WHILE 循环的退出条件和中止条件的检查,常常是条件不对,数值多一个或少一个就退出或中止,特别是N,N+1, N-1到底是哪个值,还有是大于还是大于等于,小于还是小于等于。对于复杂的退出或中止条件一定要仔细检查,与或条件的检查,括号以及优先级检查。

10、条件执行体检查

IF ELSE 和SWITCH的检查,IF ELSE条件的充分完整性检查,SWITCH 多路选择的完整性检查,经常会出现遗漏的情况,IF 条件中“==”误写成“=”,眼神不好容易遗漏,同时编译警告有时也会不注意。

11、函数返回前检查

MALLOC临时申请的空间,是否释放FREE,在函数中途异常退出的地方,没有FREE,大家都习惯在函数最后进行释放,这个常常遗漏。返回值是否在设计范围内,返回的空间指针是否被收回。

 

三、代码REVIEW高层次检查

1、函数的多任务调用

全局变量的保护,加锁解锁,有的是函数下又封装了函数,这个问题就比较容易隐藏起来,定位比较困难。另外一个解决办法改多任务调用为单任务调用,从调用的架构上来修改。

2、临时内存数据传递的保护

在多任务系统中,有的任务将数据写到一空间以便另外的任务来读取,另外的任务在读的过程中,任务改写此空间内容,极端的就释放此空间。这种情况表现形式多样,不同的业务场景代码实现不同,比如读写通道,关闭通道,消息传递等等。

3、多任务下状态机迁移混乱

这个就属于设计不足,要么是设计中有遗漏的情况,要么就是设计状态机过于复杂,迁移条件太多。

4、下层模块的代码调用上层代码

这种情况不是不允许,而是不好,容易导致调用关系混乱,特别是多任务系统中,容易导致多任务调用。比较好的凡是是下层代码发消息给上层代码。

5、单个资源被多个任务使用

常用的解决方式是使用一个单独的调度任务进行此资源的使用,多个任务向这个任务请求使用,保证单个资源由一个任务来控制。

6、多任务的互锁

这个在多任务的程序中也不经意的会犯,好的解决方式是减少锁的设计,甚至是无锁设计,通过将资源进行管理的方式来降低多任务下的调用。

7、非阻塞和阻塞的使用

在多任务系统下,合理使用阻塞和非阻塞的函数实现,这个应该是设计时加以注意。明确那些任务是非阻塞运行,那些任务是可以阻塞运行。

8、业务流程中异常的处理

在复杂的业务流程中,正常的流程一般设计和编写代码都可以完成的很好,但是业务流程中都会有异常出现,设计中和编写代码中,如何尽可能将异常都考虑全面,处理的全面,是比较考功底的,异常的REVIEW也是关键,牵扯到业务流程的覆盖程度。

9、代码的扩展性进行REVIEW

业务经常是变化的,所以接口代码就要跟随修改,如何为后续修改带来方便,对接口设计和编写就要有一定的灵活性和可扩展性。可以参考链接https://blog.csdn.net/DQWKLC/article/details/91491972

10、代码复杂度的REVIEW

代码中的复杂度也是需要进行REVIEW的,特别是性能优化上,代码复杂,执行的效率一定会打折扣,而且容易出错。关键的算法应该通过设计减小复杂度,通过前期的伪码设计,减少或降低实际编写代码的难度。

 

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java代码review是为了确保代码的质量和可维护性,以及遵循最佳实践和编码规范。以下是一些常见的Java代码review检查项: 1. 命名规范:检查变量、方法和类的命名是否符合驼峰命名法,并且能够描述其含义。 2. 代码注释:检查代码中是否有足够的注释,以解释代码的功能和实现。注释应该清晰、简洁,并且保持同步更新。 3. 代码格式化:检查代码的格式是否一致,例如缩进、空格和换行符的使用。 4. 异常处理:检查是否对可能出现的异常情况做了处理,例如使用try-catch语句来捕获异常,并给出适当的错误处理和日志记录。 5. 可读性:检查代码的可读性,确保代码清晰易懂。通过使用有意义的变量名、避免过长的方法和类,以及使用合适的代码结构来提高代码的可读性。 6. 避免硬编码:检查是否避免了硬编码,即在代码中直接使用固定的数值和字符串,应该使用常量或配置文件来管理这些值。 7. 安全性:检查是否对潜在的安全漏洞进行了预防和处理。例如,是否对用户输入进行了验证和过滤,并避免了SQL注入和跨站脚本攻击等。 8. 性能优化:检查是否有可能的性能优化点,例如避免重复计算和循环、选择合适的数据结构和算法等。 9. 代码复用:检查是否有可能的代码复用机会,例如使用继承、接口和设计模式来避免重复编写相似的代码。 10. 版本控制和代码管理:检查是否遵循正确的代码版本控制和管理,例如对代码进行适当的分支、提交和合并。 通过进行代码review,可以帮助发现并修复潜在的问题,提高代码质量和可维护性,并且促进团队之间的合作和知识共享。 ### 回答2: Java代码review是检查Java程序的代码质量和规范的过程。在进行Java代码review时,我们需要关注以下几个主要的检查项: 1. 代码风格:检查代码的缩进、命名规范、注释等,保证代码易读易懂,符合统一的编码风格。 2. 代码结构:检查代码的模块划分和类的组织结构是否合理,遵循面向对象的设计原则,并且模块之间的依赖关系是否清晰。 3. 可读性:检查代码的逻辑是否清晰,每个方法或函数是否只做一件事,避免过长的方法和复杂的嵌套结构。 4. 异常处理:检查代码中是否捕获和处理了可能出现的异常,避免程序崩溃或者出现不必要的错误。 5. 性能优化:检查代码是否存在性能问题,例如是否存在冗余的计算、不必要的内存占用等,优化代码性能提高程序运行效率。 6. 安全性:检查代码是否存在潜在的安全隐患,例如SQL注入、跨站脚本攻击等,增加代码的安全性。 7. 代码复用性:检查代码是否存在重复代码,避免代码冗余,提高代码复用性和维护性。 8. 单元测试:检查是否存在有效的单元测试覆盖率,保证代码的功能和逻辑正确性。 以上是常见的Java代码review检查项,通过对这些检查项的审核,可以帮助我们提高代码的质量、可维护性和安全性。 ### 回答3: Java代码review是一种对Java程序代码进行审查和评估的过程,旨在发现潜在的问题和改进程序质量。在进行Java代码review时需要关注以下几个检查项: 1. 代码风格:检查代码是否符合约定的编码规范和风格,比如变量命名、缩进、注释等。遵循一致的代码风格可以提高代码的可读性和维护性。 2. 逻辑错误和bug:检查代码中是否存在逻辑错误和潜在的bug,例如条件判断是否正确、循环是否正确终止等。通过预先发现这些错误可以提高程序的可靠性和稳定性。 3. 性能问题:检查代码中是否存在性能瓶颈和低效的操作,比如循环嵌套过多、频繁的对象创建和销毁等。优化这些性能问题可以提高程序的执行效率。 4. 可维护性:检查代码是否易于维护和扩展,例如代码的模块化程度、接口设计是否合理等。具有良好的可维护性可以减少代码维护的难度和成本。 5. 安全性问题:检查代码是否存在安全漏洞和潜在的攻击风险,例如未经验证的输入、SQL注入、跨站脚本攻击等。确保代码的安全性可以保护用户的信息和系统的稳定性。 6. 单元测试覆盖率:检查代码是否具有足够的单元测试覆盖率,确保代码功能的正确性和稳定性。通过编写全面的单元测试可以提高代码的可靠性和可测试性。 7. 文档和注释:检查代码是否有清晰的文档和注释,包括方法和类的功能、输入输出等。良好的文档和注释可以提高代码的可读性和理解性。 通过进行Java代码review,可以发现和纠正代码中的问题,提高代码质量和可靠性,同时也可以加强团队之间的沟通和知识交流。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值