Fish Shell:
Refactoring

Hoe doe je het:

Stel je voor dat je een script hebt dat in de loop van de tijd aanzienlijk is gegroeid. Het begon simpel, maar nu is het een beest dat wijd uitspreidt met tentakels van logica. Hier is een hapklare voorbeeld van het refactoren van een functie om het leesbaarder en efficiënter te maken:

Voor refactoring:

function old_and_clunky
    set color (cat ~/.config/fish/color_theme)
    if test "$color" = 'blue'
        echo 'Blue theme set!'
    else if test "$color" = 'red'
        echo 'Red theme set!'
    else
        echo 'Default theme set!'
    end
end

Na refactoring:

function set_theme_color
    set theme_color (cat ~/.config/fish/color_theme)
    switch $theme_color
        case blue
            echo 'Blue theme set!'
        case red
            echo 'Red theme set!'
        default
            echo 'Default theme set!'
    end
end

Refactoring verbeterde de naam van de functie om het doel beter te beschrijven en verving de if-else-keten met een schonere switch-verklaring.

Voorbeelduitvoer:

Blue theme set!

Diepere Duik

Refactoring werd voor het eerst gedetailleerd beschreven in het baanbrekende boek van Martin Fowler “Refactoring: Improving the Design of Existing Code”. Het boek schetste een gestructureerde aanpak om code te verbeteren zonder nieuwe functionaliteit te schrijven. Sindsdien zijn er veel refactoring-technieken geïntroduceerd, en het concept is een fundamenteel onderdeel geworden van moderne softwareontwikkeling.

In de Fish Shell-omgeving kan refactoring er enigszins anders uitzien dan in andere programmeercontexten vanwege zijn gespecialiseerde syntax en command-line aard. Alternatieven voor het refactoren van scripts in Fish kunnen het overzetten naar een andere shell-taal of het gebruik van externe tools voor geavanceerder scriptbeheer inhouden. Echter, het behouden van de native Fish-syntax betekent vaak een betere integratie met de functies van de shell en een over het algemeen gestroomlijndere ervaring.

Bij het refactoren in Fish Shell heb je voornamelijk te maken met functies en commando’s in plaats van met brede-scope klassen of modules die vaak voorkomen in andere talen. Deze granulariteit kan het refactoren tot een directer en onmiddellijker proces maken, maar het benadrukt ook het belang van heldere, bondige en onderhoudbare code.

Zie Ook