- Package: de.krisenvorrat.* -> de.bollwerk.* - Klassen: KrisenvorratApp/Database/Theme -> Bollwerk* - ApplicationId: de.bollwerk.app - Server: BOLLWERK_* Env-Vars, bollwerk HOCON-Config - Docker: bollwerk-server/db/backup Container-Namen - Room DB: bollwerk.db, SharedPrefs: bollwerk_secure_prefs - Export-Dateien: bollwerk_export/inventar - UI-Strings, HTML, Admin-UI: alle auf Bollwerk - Docs, Skills, README angepasst - Alle Tests gruen, Build erfolgreich
2 KiB
2 KiB
| applyTo |
|---|
| **/*.kt |
Kotlin Coding Conventions – Bollwerk App
Diese Konventionen gelten für alle Kotlin-Dateien im Workspace.
Sprache & Plattform
- Kotlin (aktuell), Zielplattform Android (aktuelles API-Level)
- Jetpack Compose für UI
- Gradle (Kotlin DSL) als Build-System
State Management
StateFlow/MutableStateFlowin ViewModelscollectAsStateWithLifecycle()in Composablesremember/rememberSaveablefür UI-lokalen State
Navigation
- Jetpack Navigation Compose
- Type-safe Navigation mit
@SerializableRouten
Concurrency
- Kotlin Coroutines (
suspend,Flow,StateFlow) viewModelScopefür ViewModel-gebundene CoroutineswithContext(Dispatchers.IO)für I/O-Operationen- Strukturierte Fehlerbehandlung mit
try/catchum jedensuspend-Aufruf
Naming
- Klassen/Interfaces:
UpperCamelCase - Funktionen/Variablen:
lowerCamelCase - Konstanten:
UPPER_SNAKE_CASE - Composable-Funktionen:
UpperCamelCase(wie Klassen) - Boolean-Eigenschaften: Präfix
is,has,can,should
Zugriffsmodifikatoren
- So restriktiv wie möglich:
private>internal>public - Kein
publicohne klaren Grund (Kotlin-Default istpublic)
Verbotene Patterns
- Keine Force-Casts (
as) ohne vorherige Typprüfung –as?bevorzugen - Keine
println()-Statements – stattdessenTimberoder Projekt-Logger verwenden - Keine ungenutzten Imports
- Keine auskommentierten Code-Blöcke
- Kein
!!(not-null assertion) in Produktionscode
Testing
- JUnit 5 für Unit Tests
- Espresso / Compose Testing für UI Tests
- Testmethoden:
test_<Was>_<Vorbedingung>_<Ergebnis>() - Gliederung:
// Given,// When,// Then - MockK für Mocking
Persistenz
- Room (SQLite) für lokale Daten
- kotlinx.serialization für JSON Import/Export
- DataStore für Einstellungen/Konfigurationen
- Keychain für Session-Tokens
Dokumentation
- Alle öffentlichen/internen Typen und Methoden mit
///dokumentieren - Kommentare beschreiben „was" und „warum", nicht „wie"