Lo que realmente desea es eliminar las referencias ad nauseum a las constantes, ya sea que estén nombradas o desnudas:
for_each_chess_square (row, col) {
/*...*/
}
Si realmente va a proliferar la constante repitiendo tales bucles y otras cosas, es mejor quedarse 8.
8es autodescriptivo; No es una macro que representa otra cosa.
You Are't Don't Gonna (TM) lo convertirá en un programa de ajedrez de 9x9 y si alguna vez lo hace, la proliferación de 8 no será la mayor dificultad.
Podemos buscar una base de código de línea de 150,000 para el token 8, y clasificar qué ocurrencias significan qué en segundos.
Mucho más importante es modularizar el código para que el conocimiento del ajedrez se concentre en la menor cantidad de lugares posible. Es mejor tener uno, dos, quizás tres módulos específicos de ajedrez en los que se produce un 8 literal, que treinta y siete módulos unidos con responsabilidad específica de ajedrez, que se refieren al 8 a través de un nombre simbólico.
Cuando o 8 esta constante se convierte en una fuente de tensión en su programa, puede solucionarlo fácilmente en ese momento. Solucione problemas reales que están sucediendo ahora. Si no siente que se ve obstaculizado por ese 8 en particular, vaya con ese instinto.
Suponga que en el futuro desea admitir dimensiones de placa alternativas. En ese caso, esos bucles tendrán que cambiar si usan una constante con nombre o 8, porque las dimensiones serán recuperadas por alguna expresión como board.widthy board.height. Si tiene en BOARD_SIZElugar de 8, estos lugares serán más fáciles de encontrar. Entonces eso es menos esfuerzo. Sin embargo, no hay que olvidar el esfuerzo de reemplazar 8con BOARD_SIZEen el primer lugar. El esfuerzo general no es menor. Haciendo un paso sobre el código para el cambio 8a BOARD_SIZE, y luego otro para apoyar dimensiones alternativas, no es más barato que sólo ir de 8a apoyo dimensión alternativa.
También podemos ver esto desde un análisis de riesgo / beneficio puramente frío y objetivo. El programa tiene constantes desnudas ahora. Si estos son reemplazados por una constante, no hay beneficio; El programa es idéntico. Con cualquier cambio, existe un riesgo distinto de cero. En este caso, es pequeño. Aún así, no se debe correr ningún riesgo sin un beneficio. Para "vender" el cambio frente a este razonamiento, tenemos la hipótesis de un beneficio: un beneficio futuro que ayudará con un programa diferente: una versión futura del programa que no existe ahora. Si se está planificando tal programa, esta hipótesis y su razonamiento asociado son de buena fe y deben tomarse en serio.
Por ejemplo, si le faltan días para agregar más código que prolifere aún más estas constantes, es posible que desee eliminarlas. Si esas instancias de las constantes son aproximadamente todas las instancias que existirán, ¿por qué molestarse?
Si alguna vez trabaja en software comercial, los argumentos de ROI también se aplicarán. Si un programa no se vende, y cambiar algunos números codificados a constantes no mejorará las ventas, no se le compensará el esfuerzo. El cambio tiene cero retorno de la inversión de tiempo. Los argumentos del ROI se generalizan más allá del dinero. Usted escribió un programa, invirtiendo tiempo y esfuerzo, y obtuvo algo de él: ese es su retorno, su "R". Si al hacer ese cambio solo, obtienes más de esa "R", sea lo que sea, entonces por todos los medios. Si tiene algún plan para un mayor desarrollo y ese cambio mejora su "R", lo mismo. Si el cambio no tiene una "R" inmediata o previsible para usted, olvídalo.