To, czego naprawdę chcesz, to wyeliminowanie odwołań do stałych reklam na stałe, bez względu na to, czy są nazwane, czy nie
for_each_chess_square (row, col) {
/*...*/
}
Jeśli zamierzasz rozpowszechniać stałą, powtarzając takie pętle i tak dalej, najlepiej trzymać się tego 8
.
8
jest samoopisujący; to nie makro oznacza coś innego.
Nie zmienisz go nigdy w program szachowy 9x9, a jeśli kiedykolwiek to zrobisz, mnożenie 8 nie będzie główną trudnością.
Możemy przeszukać 150 000 baz kodu linii dla tokena 8 i sklasyfikować, które wystąpienia oznaczają co w sekundach.
O wiele ważniejsza jest modularyzacja kodu, aby wiedza szachowa była skoncentrowana w jak najmniejszej liczbie miejsc. Lepiej mieć jeden, dwa, może trzy moduły szachowe, w których występuje dosłownie 8, niż trzydzieści siedem modułów związanych z odpowiedzialnością szachową, odnosząc się do 8 poprzez symboliczną nazwę.
Kiedy lub jeśli ta 8 stała się źródłem napięcia w twoim programie, możesz to łatwo naprawić w tym czasie. Napraw prawdziwe problemy, które mają miejsce teraz. Jeśli nie czujesz, że przeszkadza ci ta konkretna 8, idź z tym instynktem.
Załóżmy, że w przyszłości chcesz obsługiwać alternatywne wymiary płyty. W takim przypadku pętle te będą musiały zmienić, czy używają nazwanej stałej, czy 8
, ponieważ wymiary zostaną odczytane przez jakieś wyrażenie, takie jak board.width
i board.height
. Jeśli masz BOARD_SIZE
zamiast 8
, te miejsca będą łatwiejsze do znalezienia. To mniej wysiłku. Nie należy jednak zapominać o wysiłku zastąpienia 8
go BOARD_SIZE
. Ogólny wysiłek nie jest niższy. Dokonywanie jednej przejść nad kodem do zmian 8
do BOARD_SIZE
, a potem jeszcze do wspierania alternatywnych wymiarów, nie jest tańsze niż po prostu się z 8
alternatywnej wsparcia wymiaru.
Możemy też na to spojrzeć z czysto zimnej, obiektywnej analizy stosunku korzyści do ryzyka. Program ma teraz w sobie stałe. Jeśli zostaną one zastąpione stałą, nie ma korzyści; program jest identyczny. Przy każdej zmianie istnieje niezerowe ryzyko. W tym przypadku jest mały. Mimo to nie należy podejmować ryzyka bez korzyści. Aby „sprzedać” zmianę w obliczu tego rozumowania, musimy postawić hipotezę korzyści: przyszłej korzyści, która pomoże w innym programie: przyszłej wersji programu, która nie istnieje teraz. Jeśli planowany jest taki program, hipoteza i związane z nią rozumowanie są w dobrej wierze i należy je traktować poważnie.
Na przykład, jeśli dzieli Cię kilka dni od dodania więcej kodu, który jeszcze bardziej rozpowszechni te stałe, możesz z nich zrezygnować. Jeśli te instancje stałych to w przybliżeniu wszystkie instancje, które kiedykolwiek będą istnieć, to po co się tym przejmować.
Jeśli kiedykolwiek pracujesz nad oprogramowaniem komercyjnym, zastosowanie będą miały również argumenty dotyczące ROI. Jeśli program nie sprzedaje, a zamiana niektórych liczb zakodowanych na stałe nie poprawi sprzedaży, wysiłek nie zostanie zrekompensowany. Zmiana ma zerowy zwrot z inwestycji czasu. Argumenty dotyczące ROI generalizują się poza pieniądzem. Napisałeś program, inwestując czas i wysiłek, i coś z tego wyciągnąłeś: to twój zwrot, twoje „R”. Jeśli dokonując tej zmiany samodzielnie, uzyskasz więcej tego „R”, cokolwiek to jest, to za wszelką cenę. Jeśli masz jakiś plan dalszego rozwoju, a ta zmiana poprawi twoje „R”, to samo. Jeśli zmiana nie ma dla Ciebie natychmiastowego lub przewidywalnego „R”, zapomnij o tym.