Kod udokumentowany jest łatwiejszy do odczytania i utrzymania
Postępuj zgodnie z zasadą najmniejszego oczyszczenia i zasadą kodowania jako dokumentacji : użyj jednej zmiennej dla jednego celu, aby zarówno jej użycie było łatwe do zrozumienia, jak i kod łatwy do odczytania bez wyjaśnień.
Prawidłowo skonstruowany kod jest łatwiejszy (a więc tańszy) do (ponownego) użytkowania
Tutaj również wydaje się, że query
zawsze jest on używany do przygotowania instrukcji przed jej wykonaniem. Prawdopodobnie jest to znak, że chcesz zmienić część tego kodu na jedną (lub więcej) metod pomocniczych w celu przygotowania i wykonania zapytania (aby zachować zgodność z zasadą DRY ).
W ten sposób skutecznie:
- użyj tylko jednej zmiennej w metodzie pomocnika, aby zidentyfikować zapytanie bieżącego kontekstu,
- musisz wpisać mniej kodu za każdym razem, gdy chcesz ponownie wykonać zapytanie,
- uczynić twój kod bardziej czytelnym dla innych.
Przykłady:
Rozważ to, wzięte z twojego przykładu, gdzie wersja refaktoryzowana jest oczywiście lepsza. Oczywiście Twój fragment kodu był tylko przykładem na potrzeby tego pytania, ale koncepcja nadal jest prawdziwa i skaluje się.
Twój przykład 1:
Strings querycre,queryins,queryup,querydel;
querycre = 'Create table XYZ ...';
execute querycre ;
queryins = 'Insert into XYZ ...';
execute queryins ;
queryup = 'Update XYZ set ...';
execute queryup;
querydel = 'Delete from XYZ ...';
execute querydel ;
Twój przykład 2:
Strings query;
query= 'Create table XYZ ...';
execute query ;
query= 'Insert into XYZ ...';
execute query ;
query= 'Update XYZ set ...';
execute query ;
query= 'Delete from XYZ ...';
execute query ;
Przykład 3 (Refaktoryzowany pseudo-kod):
def executeQuery(query, parameters...)
statement = prepareStatement(query, parameters);
execute statement;
end
// call point:
executeQuery('Create table XYZ ... ');
executeQuery('Insert into XYZ ...');
executeQuery('Update XYZ set ...');
executeQuery('Delete from XYZ ...');
Korzyść wynika z regularnego ponownego użycia.
Anegdota osobista
Zaczynałem jako programista C pracujący z ograniczoną powierzchnią ekranu, więc ponowne użycie zmiennych miało sens zarówno dla skompilowanego kodu (wtedy), jak i dla umożliwienia odczytania większej ilości kodu na raz.
Jednak później przeszedłem na języki wyższego poziomu i nauczyłem się programowania funkcjonalnego, przyzwyczaiłem się używać niezmiennych zmiennych i niezmiennych referencji, o ile to możliwe, aby ograniczyć skutki uboczne.
Co będę z tego mieć?
Jeśli przyzwyczaisz się, że wszystkie dane wejściowe funkcji są niezmienne i zwrócisz nowy wynik (tak jak zrobiłaby to prawdziwa funkcja matematyczna), nabędziesz zwyczaju nie powielania sklepów.
W rezultacie prowadzi to do:
- piszesz krótkie funkcje,
- z jasno określonymi celami,
- łatwiejsze do zrozumienia,
- do ponownego wykorzystania,
- rozszerzyć (czy to przez dziedziczenie OO, czy poprzez funkcjonalne tworzenie łańcuchów),
- i dokument (jako już samodokumentujący).
Nie twierdzę, że nie ma tu żadnej korzyści ze stanu zmienności, po prostu wskazuję, w jaki sposób nawyk może rozwinąć się na tobie i jak wpływa na czytelność kodu.