Fish Shell:
Refaktorisering

Hur man gör:

Föreställ dig att du har ett skript som har vuxit en hel del över tiden. Det började enkelt, men nu är det ett odjur som kryllar av logiktentakler. Här är ett lättfattligt exempel på refaktorisering av en funktion för att göra den mer läslig och effektiv:

Före refaktorisering:

function old_and_clunky
    set color (cat ~/.config/fish/color_theme)
    if test "$color" = 'blue'
        echo 'Blått tema inställt!'
    else if test "$color" = 'red'
        echo 'Rött tema inställt!'
    else
        echo 'Standardtema inställt!'
    end
end

Efter refaktorisering:

function set_theme_color
    set theme_color (cat ~/.config/fish/color_theme)
    switch $theme_color
        case blue
            echo 'Blått tema inställt!'
        case red
            echo 'Rött tema inställt!'
        default
            echo 'Standardtema inställt!'
    end
end

Refaktoriseringen förbättrade funktionens namn för att bättre beskriva dess syfte och ersatte if-else-kedjan med ett renare switch-påstående.

Exempelutskrift:

Blått tema inställt!

Fördjupning

Refaktorisering beskrevs först i detalj i Martin Fowlers banbrytande bok “Refactoring: Improving the Design of Existing Code”. Boken presenterade en strukturerad metod för att förbättra kod utan att skriva ny funktionalitet. Många refaktoriseringstekniker har introducerats sedan dess, och konceptet har blivit en grundläggande del av modern programvaruutveckling.

I Fish Shell-miljön kan refaktorisering se något annorlunda ut jämfört med andra programmeringskontexter på grund av dess specialiserade syntax och kommandoradsnatur. Alternativ till att refaktorisera skript i Fish kan innefatta att porta till ett annat skal-språk eller att använda externa verktyg för mer avancerad skrifthantering. Dock betyder att behålla den ursprungliga Fish-syntaxen ofta bättre integration med skalets funktioner och en mer strömlinjeformad upplevelse totalt sett.

När du refaktoriserar i Fish Shell handlar det mest om funktioner och kommandon snarare än om klasser eller moduler med bredare räckvidd som är vanliga i andra språk. Denna granularitet kan göra uppgiften att refaktorisera till en mer omedelbar och direkt process, men den betonar också vikten av tydlig, koncis och underhållbar kod.

Se även