Android项目代码review清单

Android面试技术要点汇总
2021-05-17 14:29 · 阅读时长4分钟
小课

对于大多数人来说,代码review非常的枯燥,也经常被忽略,但是它却是软件开发中非常重要的一项流程,它可以让我们提前发现代码的问题,减少bug,另外我们也能在代码review的过程中学习别人的一些好的经验。

下面是一些我认为对Android项目进行代码review的一些要点。

一、内存泄漏

检测内存泄漏可以从以下几点入手:

  • 代码改动中是否涉及到保存Context。
  • 是否有RxAndroid相关的代码,如果有,检查组件ViewModel/Fragment/Activity在生命周期结束时RxCalls是否已经disposed。
  • 如果涉及到协程,检查在ViewModel scope中启动的Job是否在生命周期结束时是否cancel(使用lifecycle-viewmodel-ktx会自动管理)。
  • 如果涉及CountDownTimer/AsyncTask/音视频播放器等代码,检查是否正确的释放资源。
  • 如果在Fragment中使用了ViewBinding,应该在onDestroyView中释放binding的引用。
1private ResultProfileBinding binding;
2
3@Override
4public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
5    binding = ResultProfileBinding.inflate(inflater, container, false);
6    View view = binding.getRoot();
7    return view;
8}
9
10@Override
11public void onDestroyView() {
12    super.onDestroyView();
13    binding = null;
14}
二、布局嵌套

我们经常会使用布局嵌套,但是我们要尽量减少布局嵌套的层级,推荐使用ConstraintLayouts来减少布局的嵌套,使布局更加扁平化。

三、资源注解

在Android中,每个资源都有一个整型的唯一id,在使用时我们需要保证资源id是存在的,要不然会报找不到资源的错误,我们可以通过资源注解来检查。比如

fun showMessage(context: Context, val idRes: Int) { 
    Toast.makeText(context, idRes, Toast.SHORT_LENGHT).show()
}

如果改成这样会更好一些

fun showMessage(context: Context, @StringRes val idRes: Int) { 
    Toast.makeText(context, idRes, Toast.SHORT_LENGHT).show()
}

更多可参考:https://developer.android.com/studio/write/annotations

四、代码复用

我们应该尽可能熟悉项目中代码,当我们需要开发某一个功能时,优先应该思考这个功能是否在项目中已经有类似的实现,我们是否只需要加以改进,甚至只需要改动参数就可以实现,这样既能减少工作量,也可以减少项目的代码量。

五、项目构架原则

软件构架定义了不同模块进行调用的规范,在代码review时,我们要关注改动的代码是否违反了构架设计,比如说:

  • 在MVVM或者MVP构架中,从ViewModel或者Presenter中直接操作View。
六、一些细节
  • 删除无用的代码,比如没有用到的imports、变量、方法、资源和注释掉的代码等。
  • 统一规范格式化代码。
  • 统一规范变量名、类名和文件名等。
code review