Fish Shell:
Rifattorizzazione

Come fare:

Immagina di avere uno script che si è notevolmente espanso nel tempo. È iniziato in modo semplice, ma ora è una bestia che si estende con tentacoli di logica. Ecco un esempio compatto di come rifattorizzare una funzione per renderla più leggibile ed efficiente:

Prima del refactoring:

function old_and_clunky
    set color (cat ~/.config/fish/color_theme)
    if test "$color" = 'blue'
        echo 'Tema blu impostato!'
    else if test "$color" = 'red'
        echo 'Tema rosso impostato!'
    else
        echo 'Tema predefinito impostato!'
    end
end

Dopo il refactoring:

function set_theme_color
    set theme_color (cat ~/.config/fish/color_theme)
    switch $theme_color
        case blue
            echo 'Tema blu impostato!'
        case red
            echo 'Tema rosso impostato!'
        default
            echo 'Tema predefinito impostato!'
    end
end

Il refactoring ha migliorato il nome della funzione per descrivere meglio il suo scopo e ha sostituito la catena di if-else con un’istruzione switch più pulita.

Output di esempio:

Tema blu impostato!

Approfondimento

Il refactoring è stato descritto in dettaglio per la prima volta nel libro fondamentale di Martin Fowler “Refactoring: Improving the Design of Existing Code”. Il libro ha delineato un approccio strutturato per migliorare il codice senza scrivere nuove funzionalità. Da allora, sono state introdotte molte tecniche di refactoring e il concetto è diventato una parte fondamentale dello sviluppo software moderno.

Nell’ambiente Fish Shell, il refactoring potrebbe apparire leggermente diverso rispetto ad altri contesti di programmazione a causa della sua sintassi specializzata e della natura basata sulla riga di comando. Le alternative al refactoring degli script in Fish potrebbero includere il porting a un altro linguaggio di shell o l’utilizzo di strumenti esterni per una gestione degli script più avanzata. Tuttavia, mantenere la sintassi nativa di Fish spesso significa una migliore integrazione con le funzionalità della shell e un’esperienza più snella nel complesso.

Quando si effettua il refactoring in Fish Shell, si interagisce principalmente con funzioni e comandi invece di classi o moduli di ampio ambito comuni in altri linguaggi. Questa granularità può rendere il compito del refactoring un processo più immediato e diretto, ma sottolinea anche l’importanza di un codice chiaro, conciso e manutenibile.

Vedi anche