Kotlin:
Refaktorering

Hvordan:

Her er et Kotlin-utdrag som viser et vanlig kodeproblem og den refaktorerte versjonen. Vi starter med en kodebit som gjør for mye:

fun processOrders(orders: List<Order>) {
    for (order in orders) {
        print("Order ID: ${order.id}")
        // Beregner totalen for bestillingen
        var total = 0.0
        for (item in order.items) {
            total += item.price
        }
        // Bruker rabatt
        if (order.customer.isVIP) {
            total *= 0.9
        }
        print("Total: $total")
        // Mer behandling...
    }
}

Refaktorert for bedre lesbarhet og separasjon av bekymringer:

fun printOrderSummary(order: Order) {
    print("Order ID: ${order.id}")
    val total = calculateTotal(order)
    print("Total: $total")
}

fun calculateTotal(order: Order): Double {
    var total = order.items.sumOf { it.price }
    return if (order.customer.isVIP) total * 0.9 else total
}

fun processOrders(orders: List<Order>) {
    orders.forEach { printOrderSummary(it) }
}

Ingen eksempelutdata her siden vi ikke endret funksjonaliteten, men kodens lesbarhet og vedlikeholdbarhet fikk en enorm økning!

Dypdykk

Refaktorering som et konsept har vært rundt siden programmering begynte, men det virkelig tok av som en disiplin på 1990-tallet, spesielt etter Martin Fowler publiserte “Refactoring: Improving the Design of Existing Code” i 1999. Denne boken ga en navn til praksisen og definerte en organisert metode for å anvende den, inkludert en katalog av refaktoreringsteknikker.

Sammenligner refaktorering med alternativer: du kunne skrive om kode fra bunnen av (risikabelt og tidkrevende), eller simpelthen gjøre tilleggsendringer (fører til programvareoppblåsning og potensiell teknisk gjeld). Refaktorering treffer det søte punktet – det moderniserer og rydder opp samtidig som risikoen holdes lav.

Når det gjelder implementering, er det avgjørende å ha et solid sett med tester før du begynner å refaktorere for å sikre at du ikke ved et uhell endrer programmets oppførsel. Mange moderne IDEer (inkludert IntelliJ for Kotlin) har automatiserte refaktoreringsverktøy for å omdøpe variabler, trekke ut metoder og mer, noe som kan fremskynde prosessen og redusere feil.

Se også