Kotlin Language Patterns
Priority: P0 (CRITICAL)
Modern, idiomatic Kotlin standards for safety and conciseness.
Implementation Guidelines
- Immutability: Use
valby default. Only usevarif mutation is required locally. - Null Safety: Use
?for nullable types. Use safe call?.and Elvis?:over!!. - Expressions: Prefer expression bodies
fun foo() = ...for one-liners. Useif/tryas expressions. - Classes: Use
data classfor DTOs. Usesealed interface/classfor state hierarchies (e.g.,Success,Error,Loading). Access members as a computed property rather than a function. - Extension Functions: Prefer over utility classes (
StringUtil). Keep private/internal if module-specific. - Named Arguments: Use for clarity, especially with booleans or multiple same-type params.
- String Templates: Use
"$var"over concatenation. Use"""for multiline strings (SQL/JSON).
Anti-Patterns
- No !! Operator: Never use in production; prefer safe calls or requireNotNull.
- No Java-isms: Use properties not get/set; prefer top-level functions over companion object statics.
- No Lateinit Abuse: Prefer nullable types or lazy delegates instead.
- No Silenced Errors: Never swallow exceptions without logging or handling.