Fish Shell:
Koodin refaktorointi

Kuinka:

Kuvittele, että sinulla on skripti, joka on kasvanut huomattavasti ajan myötä. Se alkoi yksinkertaisena, mutta nyt se on hirviö, joka rönsyilee loogisten lonkeroiden kanssa. Tässä on pieni esimerkki funktion refaktoroinnista, jotta se olisi luettavampaa ja tehokkaampaa:

Ennen refaktorointia:

function old_and_clunky
    set color (cat ~/.config/fish/color_theme)
    if test "$color" = 'blue'
        echo 'Sininen teema asetettu!'
    else if test "$color" = 'red'
        echo 'Punainen teema asetettu!'
    else
        echo 'Oletusteema asetettu!'
    end
end

Refaktoroinnin jälkeen:

function set_theme_color
    set theme_color (cat ~/.config/fish/color_theme)
    switch $theme_color
        case blue
            echo 'Sininen teema asetettu!'
        case red
            echo 'Punainen teema asetettu!'
        default
            echo 'Oletusteema asetettu!'
    end
end

Refaktorointi paransi funktion nimeä kuvaamaan paremmin sen tarkoitusta ja korvasi if-else-ketjun puhtaammalla switch-lauseella.

Esimerkkitulostus:

Sininen teema asetettu!

Syväsukellus

Refaktorointi kuvattiin ensimmäisen kerran yksityiskohtaisesti Martin Fowlerin merkittävässä kirjassa “Refactoring: Improving the Design of Existing Code”. Kirja esitti rakenteellisen lähestymistavan koodin parantamiseen kirjoittamatta uutta toiminnallisuutta. Sen jälkeen on esitelty monia refaktorointitekniikoita, ja käsite on tullut olennaiseksi osaksi modernia ohjelmistokehitystä.

Fish Shell -ympäristössä refaktorointi saattaa näyttää hieman erilaiselta kuin muissa ohjelmointikonteksteissa sen erikoistuneen syntaksin ja komentorivin luonteen vuoksi. Vaihtoehtoja Fish-skriptien refaktoroinnille saattaisi olla niiden siirtäminen toiseen shell-kieliin tai ulkoisten työkalujen käyttö edistyneemmän skriptinhallinnan kannalta. Kuitenkin natiivin Fish-syntaksin säilyttäminen tarkoittaa usein parempaa integraatiota kuoren ominaisuuksiin ja yleisesti sujuvampaa kokemusta.

Refaktoroidessa Fish Shellissä, käsittelet enimmäkseen funktioita ja komentoja verrattuna muihin kieliin yleisiin laajemman soveltamisalan luokkiin tai moduuleihin. Tämä rakeisuus voi tehdä refaktoroinnista välittömämmän ja suorempaa prosessin, mutta se myös korostaa selkeän, tiiviin ja ylläpidettävän koodin tärkeyttä.

Katso Myös