Android产品研发(二十)-->代码Review

来源:互联网 发布:feplayer.js制作弹幕 编辑:程序博客网 时间:2024/06/06 00:28

上一篇文章中我们讲解了如何在Android studio中进行单元测试。实际开发过程中有一些功能性的需求,比如测试工具类,测试数据存储等测试工作,如果还是通过重复执行apk文件的编译,安装,运行等会浪费大量的时间,而这些功能与Android的开发环境无太大的关系,我们完全可以使用单元测试来执行。Android studio中默认是支持进行单元测试的,并提供了获取Context等系统对象的API,我们可以通过其系统提供的API获取Context等对象,进而测试相应的功能。
具体更多关于Android studio中进行单元测试的知识点,可参考我的:Android studio中的单元测试

本文我们将讲解Android中的代码Review。良好的产品开发迭代过程中,代码Review是一个必不可少的步骤,通过代码Review能够提高产品质量,增强团队成员之间的沟通,提高开发效率。所以团队开发活动中定时进行代码Review就显得很有必要了。

一:什么是代码Review?

review字面的意思是再次查看,代码review就是代码再次查看评审的意思。这里我们首先看一下百科中对代码Review中的定义:

代码评审是指在软件开发过程中,通过对源代码进行系统性检查的过程。通常的目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平。 Code Review是轻量级代码评审,相对于正式代码评审,轻量级代码评审所需要的各种成本要明显低的多,如果流程正确,它可以起到更加积极的效果。正因如此,轻量级代码评审经常性得被引入到软件开发过程中。

我理解的代码review就是在Android开发过程中,每个迭代周期编码结束之后测试之前,团队成员之间相互查看对方的代码,不一定是逐行逐句的查看,主要是对核心方法,编程思路有一个大概的评审查看。

二:代码Review的好处

通过代码Review可以提高产品代码的质量通过代码Review可以增强团队成员之间的沟通通过代码Review能够有效的提前发现代码中存在的缺陷与BUG,降低线上出现事故的概率通过代码Review可以提高团队成员的编程能力,不同成员之间对功能设计思路的重构可以很好的提高团队成员的个人专业技能

三:为何需要代码Review

由于团队成员之间既有新成员又有老成员,既有大神也有菜鸟,为了提高产品代码质量,所以团队成员在产品迭代周期中固定时间进行代码Review有利于提高全队成员对产品代码的理解与个人能力的提高。通过代码Review,团队成员对产品的每个模块都有了认识,对App上出现的错误信息立即反馈与修复。

四:代码Review实践

团队成员每周都会有固定的时间进行代码Review,每次Review的时间大概在半小时至一小时之间。

主要流程:

每个人介绍各自的功能需求,实现的主要逻辑,核心代码等;团队成员提出问题,其他实现思路等;讨论不同实现思路的方式以及优劣势;

五:Android代码lint检查

除了队员之间的代码Review,还可以通过Android 代码lint的方式review代码。Android studio默认已经提供了强大的lint检查工具,通过其我们可以很方便的发现代码中存在的问题,修正可能出现的bug等。

通过Android studio编译工具执行lint检查操作

(1)执行Android studio –> Analyze –> Inspect code操作,打开代码检查框

这里写图片描述

(2)在代码检查框中选择为整个工程执行lint检查?还是整个module或者是当前的源文件执行lint检查,这里为了简单起见,我们只为当前的源代码文件执行lint检查,然后执行确认即可

这里写图片描述

(3)接下来就可以在我们的Android studio查看lint检查结果了

这里写图片描述

可以发现我们lint检查之后出现了许多检查结果,其中在uuelectricrenter项目下存在着92条检查信息,下面我们就分析一下检测结果。

六:取消无用的lint检查

Android > Lint > Correntness

这里写图片描述

可以看到在Correctness栏目下列出了出现问题的条目,而在右侧则列出了出现问题的源码文件,位置,问题描述,建议方案等:

这里写图片描述

可以发现该lint问题是在MainMapFragment源码文件的188行,我们找到改源码文件的第188行,看一下源码是怎么样写的:

rootView = inflater.inflate(R.layout.fragment_main_map, null);

11

可以发现使用布局加载器的时候调用inflate方法第二个parentView参数我们传递的是null,这时候lint检查就会报错,当然了在程序中这样写是没有问题的,而我们以后不想lint检查的时候在检查出这个问题,那么怎么办呢?

选中lint检查条目 –> 右键 –> Disable inspection,这时候我们再次执行lint检查,发现就无法检测出这个问题了:
这里写图片描述

七:修复lint检查异常

在看一个lint检查结果:
这里写图片描述

好吧,这样看的不是太清楚,我们看一下lint描述:
这里写图片描述

问题描述是:在MainMapFragment的1635行,调用setText方法的时候没有使用string资源,那我们就看一下改行代码的实现:

mTvMsg.setText(“步行” + result);

11

可以看到我们为TextView设置text字符串的时候直接硬编码写入了text字符串,所以这时候报了lint检查异常,这时候我们可以通过调用string资源的方式修改,然后再次执行lint检查操作:

这里写图片描述

可以发现这时候已经没有了刚刚的lint检查异常。

八:如何设置lint检查

Android studio –> Perferences –> Deitor Inspections
这里写图片描述

一个简单的设置lint检查的例子

我们在Android布局文件中为TextView设置text的时候可能直接硬编码写入字符串:

0 0
原创粉丝点击