Android 开发规范

Android 开发可以使用各种编码语言,比如 Java, C#, Kotlin, Flutter(Dart) ,甚至是 Vue/React/PHP 等。本文将主要介绍基于 Java 开发的 Android 开发规范。

1. 命名规范

  • 包名:建议使用小写字母,遵循逆域名命名规则,例如 com.example.appname
  • 类名:类名使用驼峰命名法,首字母大写,避免使用下划线,例如 MainActivity
  • 方法名:方法名使用驼峰命名法,首字母小写,描述性强,避免使用缩写,例如 loadDataFromServer()
  • 变量名:变量名使用小写字母和驼峰命名法,例如 userList,并尽量使用有意义的名称。
  • 常量名:常量名全部大写,用下划线分隔,例如 MAX_USER_COUNT

2. 文件和目录结构

  • 文件组织:采用模块化管理,通常按照功能划分文件夹,例如 ui, data, network, utils 等。
  • 资源管理:所有资源文件(如图片、布局、字符串等)应该放在 res 目录下,遵循规范的目录结构。
  • 布局文件:布局文件放在 res/layout 目录下,每个布局文件应该命名为描述性强的名称,例如 activity_main.xml

3. UI设计规范

  • 布局优化:避免过多的嵌套布局,尽量使用ConstraintLayout来减少布局层级,提高渲染效率。
  • 颜色和样式:使用主题和样式来统一管理应用的颜色和样式,避免在多个布局文件中重复定义相同的属性。
  • 适配性:确保应用在不同屏幕尺寸和分辨率上都能正常显示,使用 dpsp 等单位来避免硬编码的像素值。

4. 代码风格

  • 缩进和空格:使用4个空格进行缩进,避免使用Tab缩进。
  • 方法长度:一个方法尽量保持简短,避免方法过长。长方法应分解为多个小方法。
  • 注释:为复杂的代码添加注释,但避免过多的冗余注释。类和方法的文档注释要简洁明了,说明目的、输入输出等。

5. 内存管理和性能优化

  • 避免内存泄漏:避免在静态变量、单例中持有活动(Activity)或视图(View)的引用。
  • 异步处理:在需要执行耗时操作时,应使用异步线程、AsyncTask 或其他异步机制,避免在主线程中执行耗时操作。
  • 图片优化:加载图片时使用合适的库(如Glide、Picasso),避免加载过大图片,减少内存占用。
  • 性能监控:定期使用Profiler工具检查应用的CPU、内存和网络性能,确保应用流畅。

6. 数据存储规范

  • SharedPreferences:用于存储小量的键值对数据,如用户设置等。
  • SQLite:用于存储结构化数据,应该使用ORM(如Room)简化数据库操作。
  • 文件存储:对于较大的文件或二进制数据,建议使用内部存储或外部存储,并遵守Android的权限管理要求。

7. API设计规范

  • Retrofit / OKHttp:对于网络请求,使用Retrofit进行封装,OkHttp处理底层请求。请求的API地址要保持统一格式。
  • MVVM / MVP模式:遵循架构设计模式,尽量使用MVVM(Model-View-ViewModel)或MVP(Model-View-Presenter)来解耦UI和业务逻辑。
  • LiveData 和 ViewModel:推荐使用 LiveData 来实现数据的观察和更新,ViewModel 用来管理与UI相关的数据。

在 java/php/C#/UWP/android/vue/Angular 等开发大型项目中,不同开发人员负责不同任务,项目分层架构,实现逻辑解耦

在 Android 开发中,传统的开发模式是所有逻辑都写在 Activity 中,一个界面一个 Activity,这很好理解,但是大型项目就会出现很多 Activity ,而且一个错误可能在很多 Activity 中出现,这样你就可能采用批量修改的方式修改大量代码。为了解决这个问题,就需要代码复用,抽离出公共的类,方法。

MVC

​ 显示界面的叫做 View 层,业务逻辑在 Controller 层,而操作底层数据库则在 Model 层实现。这就是最简单的MVC开发模式,数据库表结构发生变化,只需要更改 Model 层代码即可。

MVP

​ MVC的思想引入到 Android 开发中,

MVVM

​ MVVM 这种思想最早是 Microsoft 提出的,基于 C# 开发 ASP.Net 项目。之后很多其他开源框架都推出类似“数据双向绑定” 的功能,比如 Vue/React/AngularJS,变量值修改后,界面自动应用上。Google总结前人思想,在 2018 推出 jetpack Andorid 开发实用工具包。希望规范 Android 开发的方式。

8. 权限管理

  • 权限请求:遵循Android 6.0+的运行时权限机制,动态申请权限,避免在Manifest中声明过多不必要的权限。
  • 权限最佳实践:只请求应用正常运行所需的权限,避免请求不必要的权限,提示用户权限的合理性。

9. 测试规范

  • 单元测试:使用JUnit进行单元测试,确保代码逻辑的正确性。
  • UI测试:使用Espresso进行UI自动化测试,确保UI交互的正确性。
  • Mock数据:在测试时使用Mockito等工具进行Mock,确保测试环境的可控性。

10. 版本控制

  • Git:使用Git进行版本控制,遵循Git的最佳实践,例如保持较为详细的提交信息,避免提交时遗漏必要文件。
  • 分支管理:遵循GitFlow或其他适合团队的分支管理策略,开发过程中使用feature分支,合并时使用pull request进行代码审查。

禁用 lamda 表达式

虽然 lamda 表达式很简洁,在很多其他语言中经常使用。Java10 也开始新增 lamda 表达式这个新特性。可以减少很多代码,但是对新手理解代码原理不太友好。

Android Studio 配置调优

Android开发规范是确保Android应用开发高效、有序、可维护的规则和最佳实践。以下是一些常见的Android开发规范: