关于 android-development
面向 Android 开发者的实践指南,涵盖 Kotlin 规范、应用架构、界面模式、测试与性能。
主要功能
- 01Kotlin 命名与设计规范
- 02Clean Architecture 与 MVI 指引
- 03导航与界面状态实践
- 04单元与界面测试指引
- 05生命周期与后台任务实践
适用场景
- 01在 Android 项目中统一 Kotlin 风格
- 02规划应用分层与界面状态
- 03设计 ViewModel 和导航测试
- 04处理生命周期与延迟后台任务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill android-development安装后在 Claude Code 中输入/android-development确认已加载。
详细介绍
Android 开发最佳实践
Kotlin 通用指南
基本原则
- 所有代码和文档均使用英语
- 始终显式声明变量和函数的类型
- 避免使用
any类型;创建必要的自定义类型 - 函数体内不留空行
命名规范
- PascalCase:类、接口、枚举
- camelCase:变量、函数、方法
- underscores_case:文件和目录
- UPPERCASE:环境变量、常量
- 避免使用魔法数字;改为定义常量
- 函数名称应以动作动词开头
- 布尔变量使用以下前缀:
isLoading、hasError、canDelete
函数设计
- 函数不超过 20 条指令,且仅承担单一职责
- 使用基于动词的命名方式
- 布尔返回值使用
is、has或can前缀 - 无返回值的函数使用
execute、save、send前缀 - 通过提前返回、提取工具函数和高阶函数来避免嵌套
- 使用默认参数代替空值检查
- 将参数整合到对象中(RO-RO 模式)
数据与类
- 使用数据类表示数据结构
- 将基本类型封装为复合类型;在内部进行验证
- 优先使用不可变对象;对于不会变化的值使用
val - 遵循 SOLID 原则;优先使用组合而非继承
- 类不超过 200 条指令、10 个公共方法和 10 个属性
异常处理
- 仅在出现意外错误时使用异常
- 仅在需要修复可预期的问题或补充上下文时捕获异常
- 为领域错误创建自定义异常类型
Android 架构
整洁架构
- 实施整洁架构,明确划分层级
- 使用仓库模式进行数据持久化和缓存
- 将业务逻辑放在用例或交互器中
- 分离 UI、领域和数据层的职责
项目结构
app/
├── data/ # Data sources, repositories, models
├── domain/ # Use cases, domain models, interfaces
├── presentation/ # UI components, ViewModels, state
└── di/ # Dependency injection modules
MVI 模式
- 使用 MVI 模式管理状态和事件
- ViewModel 将 UI 状态作为单个不可变状态对象进行管理
- UI 组件观察状态并据此渲染
- 通过单一入口处理用户意图/事件
- 确保副作用可预测且可追踪
UI 开发
导航
- 使用 Navigation Component 处理 Fragment 和 Activity 导航
- 为应用流程定义导航图
- 通过 Navigation Component 处理深层链接
- 使用 Safe Args 实现类型安全的导航参数
Main Activity 结构
- MainActivity 管理主导航
- 使用 BottomNavigationView 设置主要目的地(首页、个人资料、设置等)
- 在配置更改时妥善处理导航状态
View Binding 和状态
- 使用 ViewBinding 实现类型安全的视图访问
- 使用 Flow 或 LiveData 管理 UI 状态
- 以遵循生命周期的方式观察状态变化
- 一致地处理加载、错误和成功状态
UI 框架偏好
- 优先使用 XML 布局和 Fragment,而非 Jetpack Compose(除非明确要求使用 Compose)
- 复杂布局使用 ConstraintLayout
- 遵循 Material 3 设计指南
- 针对不同屏幕尺寸遵循响应式设计实践
身份验证流程
妥善安排身份验证界面:
- 闪屏界面——应用启动时显示
- 登录界面——用户身份验证
- 注册界面——新用户注册
- 忘记密码界面——密码找回
- 验证邮箱界面——邮箱验证
测试
单元测试
- 遵循 Arrange-Act-Assert 约定
- 测试 ViewModel、用例和仓库
- 使用依赖的测试替身
- 充分覆盖业务逻辑
UI 测试
- 为 UI 组件实现组件测试
- 为 API 模块编写集成测试
- 测试导航流程
- 使用 Espresso 进行插桩测试
最佳实践
生命周期管理
- 妥善处理生命周期事件
- 避免因生命周期处理不当导致内存泄漏
- 使用遵循生命周期的组件
后台处理
- 使用 Coroutines 执行异步操作
- 妥善处理取消操作
- 使用 WorkManager 执行可延迟的后台任务
依赖注入
- 使用 Hilt 或 Dagger 进行依赖注入
- 合理设置依赖的作用域
- 保持 DI 配置井然有序
性能
- 避免在主线程上执行任务
- 使用 DiffUtil 优化 RecyclerView
- 对大型资源使用延迟加载
- 分析并优化内存使用情况
评论
支持 Markdown