Android Development

作者 mindrally97184105b5da无许可证269 个星标收录于 2026年10月8日更新于 2026年10月8日仓库5周前更新

Android development guidelines for Kotlin with clean architecture, MVI pattern, Material Design, and best practices for building robust mobile applications

AI 生成的概览

面向 Kotlin 的 Android 开发规范,涵盖整洁架构、MVI、Material 3 界面、测试与性能实践。

功能
提供一套成文的 Android 与 Kotlin 编码规范,包括命名约定、函数与类的设计规则以及异常处理方式。它描述分层整洁架构,划分为 data、domain、presentation 与 di 模块,并说明用于状态与事件管理的 MVI 模式。内容还涉及 Navigation Component、ViewBinding、XML 布局与 Compose 的取舍、认证页面流程、测试方法,以及生命周期、后台任务、依赖注入和性能方面的实践。
适用场景
在规划、编写或评审 Kotlin Android 应用代码,并希望统一架构、界面结构与测试约定时使用。适合需要参考整洁架构分层、MVI 状态管理或 Material 3 界面决策的团队或智能体。
运行要求
不包含脚本或工具,仅为说明性文档。应用其中的建议需要具备 Kotlin Android 项目及所引用的库与框架,例如 Navigation Component、ViewBinding、Flow 或 LiveData、Coroutines、WorkManager、Hilt 或 Dagger,以及用于仪器化测试的 Espresso。

Android Development Best Practices

General Kotlin Guidelines

Basic Principles

  • Use English for all code and documentation
  • Always declare variable and function types explicitly
  • Avoid the any type; create necessary custom types
  • Eliminate blank lines within function bodies

Naming Standards

  • PascalCase: Classes, interfaces, enums
  • camelCase: Variables, functions, methods
  • underscores_case: Files and directories
  • UPPERCASE: Environment variables, constants
  • Avoid magic numbers; define constants instead
  • Functions should start with action verbs
  • Boolean variables use prefixes: isLoading, hasError, canDelete

Function Design

  • Keep functions under 20 instructions with single responsibility
  • Use verb-based naming
  • Prefix boolean returns with is, has, or can
  • Prefix void returns with execute, save, send
  • Combat nesting through early returns, utility extraction, and higher-order functions
  • Use default parameters instead of null checks
  • Consolidate parameters into objects (RO-RO pattern)

Data and Classes

  • Employ data classes for data structures
  • Encapsulate primitives in composite types; validate internally
  • Favor immutability; use val for unchanging values
  • Follow SOLID principles; prefer composition over inheritance
  • Keep classes under 200 instructions, 10 public methods, 10 properties

Exception Handling

  • Reserve exceptions for unexpected errors
  • Catch exceptions only to fix anticipated issues or add context
  • Create custom exception types for domain errors

Android Architecture

Clean Architecture

  • Implement clean architecture with clear layer separation
  • Use repository pattern for data persistence and caching
  • Keep business logic in Use Cases or Interactors
  • Separate concerns between UI, domain, and data layers

Project Structure

app/├── data/           # Data sources, repositories, models├── domain/         # Use cases, domain models, interfaces├── presentation/   # UI components, ViewModels, state└── di/             # Dependency injection modules

MVI Pattern

  • Deploy MVI pattern for state and event management
  • ViewModels manage UI state as a single immutable state object
  • UI components observe state and render accordingly
  • Handle user intents/events through a single entry point
  • Keep side effects predictable and traceable

UI Development

Navigation

  • Use Navigation Component for fragment and activity routing
  • Define navigation graph for app flow
  • Handle deep links through Navigation Component
  • Implement safe args for type-safe navigation arguments

Main Activity Structure

  • MainActivity manages primary navigation
  • Use BottomNavigationView for main destinations (Home, Profile, Settings, etc.)
  • Handle navigation state properly across configuration changes

View Binding and State

  • Use ViewBinding for type-safe view access
  • Use Flow or LiveData for UI state management
  • Observe state changes in lifecycle-aware manner
  • Handle loading, error, and success states consistently

UI Framework Preferences

  • Prefer XML layouts and Fragments over Jetpack Compose (unless Compose is specifically required)
  • Use ConstraintLayout for complex layouts
  • Apply Material 3 design guidelines
  • Follow responsive design practices for different screen sizes

Authentication Flow

Structure authentication screens properly:

  1. Splash Screen - Initial app launch
  2. Login Screen - User authentication
  3. Register Screen - New user registration
  4. Forgot Password Screen - Password recovery
  5. Verify Email Screen - Email verification

Testing

Unit Testing

  • Follow Arrange-Act-Assert conventions
  • Test ViewModels, Use Cases, and Repositories
  • Use test doubles for dependencies
  • Achieve good coverage of business logic

UI Testing

  • Implement widget testing for UI components
  • Write integration tests for API modules
  • Test navigation flows
  • Use Espresso for instrumented tests

Best Practices

Lifecycle Management

  • Handle lifecycle events properly
  • Avoid memory leaks from improper lifecycle handling
  • Use lifecycle-aware components

Background Processing

  • Use Coroutines for async operations
  • Handle cancellation properly
  • Use WorkManager for deferrable background work

Dependency Injection

  • Use Hilt or Dagger for dependency injection
  • Scope dependencies appropriately
  • Keep DI configuration organized

Performance

  • Avoid work on the main thread
  • Optimize RecyclerView with DiffUtil
  • Use lazy loading for heavy resources
  • Profile and optimize memory usage

来源与署名

来源:mindrally/skills位于android-development提交9718410

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架