Middle
Jaké jsou nejlepší praktiky, které používáte k organizaci kódu v Kotlinu?
sobes.tech AI
Odpověď od AI
Používám kombinaci přístupů s důrazem na čitelnost, udržovatelnost a škálovatelnost.
- Struktura projektu podle funkcí/modulů: Rozdělení na moduly (pro velké projekty) nebo balíčky podle funkcionality.
- Dohody o pojmenování: camelCase pro proměnné a funkce, PascalCase pro třídy a objekty. Jasná a srozumitelná jména odrážející účel.
- Použití rozšíření: Pro přidání funkcionality ke stávajícím třídám bez změny jejich zdrojového kódu. Pomáhá se vyhnout dědičnosti a činí kód čistším.
// Příklad rozšíření pro String fun String.isInteger(): Boolean { return this.toIntOrNull() != null } - Funkce na úrovni vrchu: Pro pomocné funkce, které nejsou vázány na konkrétní třídu.
// Příklad funkce na úrovni vrchu fun formatCurrency(amount: Double): String { return "%.2f Kč".format(amount) } - Data-třídy: Pro jednoduché držitele dat. Automaticky generují
equals(),hashCode(),toString()acopy().data class User(val name: String, val age: Int) - Sealed-třídy: Pro reprezentaci omezené hierarchie tříd. Zajišťují úplné větvení (exhaustive when).
sealed class Result { data class Success(val data: String) : Result() data class Error(val message: String) : Result() } fun processResult(result: Result) { when (result) { is Result.Success -> println("Úspěch: ${result.data}") is Result.Error -> println("Chyba: ${result.message}") } } - Object deklarace: Pro singletony a companion objekty.
object DatabaseManager { fun connect() { // ... } } - Lambda výrazy a funkce na úrovni vrchu: Pro kompaktní a výstižný kód.
val numbers = listOf(1, 2, 3, 4, 5) val evenNumbers = numbers.filter { it % 2 == 0 } - Nullable typy a bezpečné volání (
?.,?:): Pro jasné označení možnosti null a bezpečnou práci s nimi.val name: String? = getName() val length = name?.length ?: 0 // Bezpečné volání a operátor Elvis - Dohody o formátování kódu: Dodržování standardního stylu Kotlin (mezery, odsazení atd.), často používám automatické formátování (například s pomocí ktlint).
- Komentáře: Používám komentáře k vysvětlení složitých částí kódu nebo rozhodnutí designu, ale snažím se psát samo-vysvětlující kód.
- Testy: Píšu jednotkové a integrační testy pro ověření funkčnosti a usnadnění refaktoringu.