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
- Il sito web di Refactoring di Martin Fowler: https://refactoring.com/
- Documentazione ufficiale di Fish Shell: https://fishshell.com/docs/current/index.html