Was Sie wirklich wollen, ist, Ad-nauseum- Verweise auf Konstanten zu entfernen , egal ob sie benannt oder nackt sind:
for_each_chess_square (row, col) {
/*...*/
}
Wenn Sie die Konstante tatsächlich vermehren wollen, indem Sie solche Schleifen und so weiter wiederholen, ist es am besten, sich daran zu halten 8
.
8
ist selbstbeschreibend; Es ist kein Makro, das für etwas anderes steht.
Sie werden es nicht (TM) in ein 9x9-Schachprogramm verwandeln, und wenn Sie es jemals tun, wird die Verbreitung von 8 nicht die Hauptschwierigkeit sein.
Wir können eine 150.000-Zeilen-Code-Basis nach dem Token 8 durchsuchen und in Sekunden festlegen, welche Vorkommen was bedeuten.
Viel wichtiger ist es, den Code so zu modularisieren, dass das Schachwissen an möglichst wenigen Stellen konzentriert wird. Es ist besser, ein, zwei, vielleicht drei schachspezifische Module zu haben, in denen eine wörtliche 8 vorkommt, als siebenunddreißig Module mit schachspezifischer Verantwortung, die sich auf 8 durch einen symbolischen Namen beziehen.
Wenn diese 8-Konstante zu einer Spannungsquelle in Ihrem Programm wird, können Sie sie zu diesem Zeitpunkt problemlos beheben. Beheben Sie echte Probleme, die gerade auftreten. Wenn Sie nicht das Gefühl haben, von dieser bestimmten 8 behindert zu werden, gehen Sie mit diesem Instinkt um.
Angenommen, Sie möchten in Zukunft alternative Platinenabmessungen unterstützen. In diesem Fall müssen diese Schleifen ändern, ob sie eine benannte Konstante oder verwenden 8
, da die Dimensionen durch einen Ausdruck wie board.width
und abgerufen werden board.height
. Wenn Sie BOARD_SIZE
stattdessen haben 8
, werden diese Orte leichter zu finden sein. Das ist also weniger Aufwand. Sie müssen jedoch nicht um den Aufwand zu ersetzen , vergessen 8
mit BOARD_SIZE
an erster Stelle. Der Gesamtaufwand ist nicht geringer. Machen ein Pass über den Code zu ändern 8
zu BOARD_SIZE
, und dann auf eine andere alternative Dimensionen zu unterstützen, ist nicht billiger als gerade aus gehen 8
auf alternative Dimension zu unterstützen.
Wir können dies auch anhand einer rein kalten, objektiven Risiko-Nutzen-Analyse betrachten. Das Programm enthält jetzt nackte Konstanten. Wenn diese durch eine Konstante ersetzt werden, gibt es keinen Nutzen; Das Programm ist identisch. Bei jeder Änderung besteht ein Risiko ungleich Null. In diesem Fall ist es klein. Dennoch sollte kein Risiko ohne Nutzen eingegangen werden. Um die Änderung angesichts dieser Überlegungen zu "verkaufen", müssen wir einen Nutzen annehmen: einen zukünftigen Nutzen, der bei einem anderen Programm helfen wird: eine zukünftige Version des Programms, die es derzeit nicht gibt. Wenn ein solches Programm geplant ist, sind diese Hypothese und die damit verbundenen Überlegungen zutreffend und sollten ernst genommen werden.
Wenn Sie beispielsweise noch Tage Zeit haben, um weiteren Code hinzuzufügen, der diese Konstanten weiter vermehrt, möchten Sie sie möglicherweise beseitigen. Wenn diese Instanzen der Konstanten ungefähr alle Instanzen sind, die jemals existieren werden, warum dann?
Wenn Sie jemals an kommerzieller Software arbeiten, gelten auch die ROI-Argumente. Wenn sich ein Programm nicht verkauft und das Ändern einiger fest codierter Zahlen in Konstanten den Umsatz nicht verbessert, werden Sie nicht für den Aufwand entschädigt. Die Änderung hat keine Rendite auf die Investition von Zeit. ROI-Argumente gehen über das Geld hinaus. Sie haben ein Programm geschrieben, Zeit und Mühe investiert und etwas daraus gemacht: Das ist Ihre Rendite, Ihr "R". Wenn Sie diese Änderung alleine vornehmen, erhalten Sie mit allen Mitteln mehr von diesem "R", was auch immer es ist. Wenn Sie einen Plan für die weitere Entwicklung haben und diese Änderung Ihr "R" verbessert, dito. Wenn die Änderung kein unmittelbares oder vorhersehbares "R" für Sie hat, vergessen Sie es.