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来减少布局层级,提高渲染效率。
- 颜色和样式:使用主题和样式来统一管理应用的颜色和样式,避免在多个布局文件中重复定义相同的属性。
- 适配性:确保应用在不同屏幕尺寸和分辨率上都能正常显示,使用
dp
、sp
等单位来避免硬编码的像素值。
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开发规范: