Fish Shell:
Refaktoryzacja
Jak to zrobić:
Wyobraź sobie, że masz skrypt, który z czasem mocno urośl. Zaczynał prosto, ale teraz jest to bestia rozprzestrzeniająca macki logiki. Oto przykład refaktoryzacji funkcji, aby była bardziej zrozumiała i wydajna:
Przed refaktoryzacją:
function old_and_clunky
set color (cat ~/.config/fish/color_theme)
if test "$color" = 'blue'
echo 'Ustawiono niebieski motyw!'
else if test "$color" = 'red'
echo 'Ustawiono czerwony motyw!'
else
echo 'Ustawiono domyślny motyw!'
end
end
Po refaktoryzacji:
function set_theme_color
set theme_color (cat ~/.config/fish/color_theme)
switch $theme_color
case blue
echo 'Ustawiono niebieski motyw!'
case red
echo 'Ustawiono czerwony motyw!'
default
echo 'Ustawiono domyślny motyw!'
end
end
Refaktoryzacja poprawiła nazwę funkcji, aby lepiej opisywała jej cel oraz zastąpiła łańcuch instrukcji if-else bardziej zgrabnym poleceniem switch
.
Przykładowy wynik:
Ustawiono niebieski motyw!
Dogłębne rozważania
Refaktoryzacja została po raz pierwszy szczegółowo opisana w książce Martina Fowlera “Refaktoryzacja: Ulepszanie projektu istniejącego kodu”. Książka przedstawiła strukturalne podejście do poprawiania kodu bez pisania nowej funkcjonalności. Od tego czasu wprowadzono wiele technik refaktoryzacji, a koncepcja stała się podstawową częścią nowoczesnego rozwoju oprogramowania.
W środowisku Fish Shell refaktoryzacja może wyglądać nieco inaczej niż w innych kontekstach programistycznych ze względu na jej specjalistyczną składnię i charakter poleceń konsolowych. Alternatywy dla refaktoryzacji skryptów w Fish mogą obejmować przenosiny do innego języka powłoki lub używanie zewnętrznych narzędzi do bardziej zaawansowanego zarządzania skryptami. Jednak zachowanie natywnej składni Fish często oznacza lepszą integrację z funkcjami powłoki i bardziej uproszczone doświadczenie ogólne.
Przy refaktoryzacji w Fish Shell masz do czynienia głównie z funkcjami i poleceniami, w przeciwieństwie do klas lub modułów o szerokim zasięgu, które są powszechne w innych językach. Ta szczegółowość może sprawić, że zadanie refaktoryzacji jest bardziej bezpośrednim i konkretnym procesem, ale również podkreśla znaczenie jasnego, zwięzłego i łatwego do utrzymania kodu.
Zobacz również
- Strona o refaktoryzacji Martina Fowlera: https://refactoring.com/
- Oficjalna dokumentacja Fish Shell: https://fishshell.com/docs/current/index.html