PHP:
Refaktorering

Hvordan:

La oss ta et klassisk PHP-utdrag og bruke litt refaktoreringstrollkunst på det.

Før refaktorering kan koden vår se slik ut:

function printOrderDetails($order) {
    foreach ($order as $item) {
        echo "Vare: " . $item['name'];
        echo " - Pris: " . $item['price'];
        echo "<br>";
    }
    
    if (!empty($order)) {
        echo "Totalt: " . array_sum(array_column($order, 'price'));
    }
}

Men vi kan refaktorere denne koden for å forbedre dens klarhet og modularitet:

function printItem($item) {
    echo "Vare: {$item['name']} - Pris: {$item['price']}<br>";
}

function calculateTotal($order) {
    return array_sum(array_column($order, 'price'));
}

function printOrderDetails(array $order) {
    array_walk($order, 'printItem');

    if (!empty($order)) {
        echo "Totalt: " . calculateTotal($order);
    }
}

Ved å bryte ned printOrderDetails-funksjonen til mindre funksjoner, blir koden vår mer lesbart og lettere å feilsøke.

Dypdykk

Refaktorering har sine røtter i smalltalk-programmeringssamfunnet fra tidlig på 1990-tallet og ble ytterligere popularisert av Martin Fowlers banebrytende bok “Refaktorering: Forbedring av designet på eksisterende kode” (1999). Selv om refaktorering kan anvendes på hvilket som helst programmeringsspråk, tillater PHPs dynamiske natur noen unike utfordringer og muligheter.

Alternativer til refaktorering kan inkludere å skrive om koden fra bunnen av, noe som ofte er risikabelt og mer tidkrevende. I PHP-økosystemet kan verktøy som PHPStan og Rector automatisk identifisere og utføre noen refaktoreringsoperasjoner, henholdsvis. Når det gjelder implementasjon, er det å holde refaktoreringene små og teste omfattende med enhetstester nøkkelpraksiser for å sikre vellykket refaktorering uten å introdusere feil.

Se Også