Coding Style Conventions by fwrite0920/android-skills
npx skills add https://github.com/fwrite0920/android-skills --skill 'Coding Style Conventions'目标:
适用范围:
阻挡门槛:
Baseline 策略:
规范重点:
检核方式:
验收: Quick Checklist
适用范围(全仓 / 模块 / feature)规则门槛(warning / error / 阻挡合并)Baseline 策略(是否允许、收敛节奏)CI 执行范围(全量或仅变更文件)代码审查口径(review 必查项).editorconfig 与命名规范文档detekt.yml / ktlint 配置与 baselineCI style gate(lint/detekt/ktlint)PR 模板(包含风格验收条目)规则变更记录(说明原因与影响)./gradlew lint
./gradlew detekt
./gradlew ktlintCheck
旧项目使用 baseline 时,必须在 PR 说明中写明本次减少了哪些 baseline 项目。
| 类型 | 规则 | 范例 |
|---|---|---|
| Class / Interface | PascalCase | UserRepository, Drawable |
| Function / Method | camelCase | getUserById(), onClick() |
| Variable / Property | camelCase | , |
// ✅ Composable 函数用 PascalCase (像 Class)
@Composable
fun UserProfileCard(user: User, modifier: Modifier = Modifier) { }
// ✅ State holder 用 remember + camelCase
val scrollState = rememberScrollState()
// ✅ Event callback 用 on 前缀
onUserClick: (User) -> Unit
// build.gradle.kts (project-level)
plugins {
id("io.gitlab.arturbosch.detekt") version "<project-verified-version>"
}
// build.gradle.kts (app-level)
detekt {
buildUponDefaultConfig = true
config.setFrom("$rootDir/config/detekt/detekt.yml")
baseline = file("$rootDir/config/detekt/baseline.xml")
}
complexity:
LongMethod:
threshold: 30
LongParameterList:
functionThreshold: 6
constructorThreshold: 8
naming:
FunctionNaming:
excludes: ['**/composables/**'] # Compose 用 PascalCase
style:
MaxLineLength:
maxLineLength: 120
WildcardImport:
active: true
MagicNumber:
ignorePropertyDeclaration: true
ignoreCompanionObjectPropertyDeclaration: true
# 生成 baseline,忽略现有问题
./gradlew detektBaseline
# 之后只检查新代码的违规
./gradlew detekt
// build.gradle.kts
plugins {
id("org.jlleitschuh.gradle.ktlint") version "<project-verified-version>"
}
ktlint {
android.set(true)
outputColorName.set("RED")
}
[*.{kt,kts}]
max_line_length = 120
indent_size = 4
insert_final_newline = true
# Ktlint specific
ktlint_standard_no-wildcard-imports = enabled
ktlint_standard_trailing-comma-on-call-site = enabled
ktlint_standard_trailing-comma-on-declaration-site = enabled
fun getUserName(): String)/**
* 根据优先级排序并过滤过期的任务。
*
* @param tasks 待处理的任务列表
* @param now 用于判断过期的时间点,默认为当前时间
* @return 依优先级排序的有效任务,过期任务会被过滤
* @throws IllegalArgumentException 如果 tasks 包含 null 元素
*/
fun filterAndSort(tasks: List<Task>, now: Instant = Instant.now()): List<Task>
Weekly Installs
–
Repository
First Seen
–
Security Audits
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
userNameisLoading| Constant (top-level/object) | SCREAMING_SNAKE_CASE | MAX_RETRY_COUNT |
| Package | lowercase (no underscores) | com.example.feature.auth |
| @Composable Function | PascalCase | LoginScreen(), UserCard() |
| Backing Property | _camelCase | private val _uiState |
Next.js 15+ 最佳实践指南:文件约定、RSC边界、异步模式与性能优化
989 周安装
阿里云 OpenClaw 最小化冒烟测试设置指南 - 验证 CLI、插件与网关状态
168 周安装
AWS Serverless 开发指南:Lambda 函数与 API Gateway 集成模式最佳实践
168 周安装
GitHub PR创建指南:遵循Sentry工程实践的拉取请求模板与流程
168 周安装
GeoPandas 中文教程:Python 地理空间数据分析与可视化指南
168 周安装
Commit-Helper:遵循 Conventional Commits 规范的 Git 提交信息助手
168 周安装
Stable Baselines3 强化学习库使用指南:训练RL智能体、自定义环境与回调
168 周安装