Afirma que el 0 debería ser una constante, y en realidad me acopló marcas debido a eso.
Estoy de acuerdo. El uso del cero aquí es "magia". Imagina que estás leyendo este código por primera vez. No sabe por qué el cero es especial, y el literal no le dice nada sobre por qué el cero es especial. Si, por el contrario, dijiste if(comboVendor.SelectedIndex == CreateNewVendorIndex)
, entonces es muy claro para el lector por primera vez lo que significa el código.
Afirma que no debería usar literales en mi código en absoluto.
Esa es una posición extrema; una posición realista sería decir que el uso de literales es una bandera roja que indica que el código podría no ser tan claro como podría ser. A veces es apropiado.
El problema es que no entiendo por qué querría hacer que ese código en esa situación sea una constante. Ese índice nunca cambiará
Que nunca cambiará es una excelente razón por la cual es una constante . Es por eso que las constantes se llaman constantes; porque nunca cambian.
ni es algo que necesitarías modificar.
¿De verdad? ¿No puedes ver cualquier situación en la que alguien quiera cambiar el orden de las cosas en un cuadro combinado?
El hecho de que pueda ver una razón por la cual esto podría cambiar en el futuro es una buena razón para no hacer que sea una constante. Más bien debería ser un campo entero estático de solo lectura no constante. Una constante debe ser una cantidad que se garantiza que permanezca igual para siempre . Pi y el número atómico del oro son buenas constantes. Los números de versión no lo son; Cambian todas las versiones. El precio del oro es obviamente una constante terrible; cambia cada segundo Solo haga constantes las cosas que nunca, nunca cambiarán .
Parece un desperdicio de memoria mantener un solo 0 en la memoria que se usa para una situación muy específica y nunca cambia.
Ahora llegamos al punto crucial del asunto.
Esta es quizás la línea más importante en su pregunta porque indica que tiene una comprensión muy errónea de (1) la memoria y (2) la optimización. Estás en la escuela para aprender, y ahora sería un buen momento para obtener una comprensión correcta de los fundamentos. ¿Puede explicar en detalle por qué cree que "es un desperdicio de memoria mantener un solo cero en la memoria"? En primer lugar, ¿por qué cree que es relevante optimizar el uso de cuatro bytes de memoria en un proceso con al menos dos mil millones de bytes de almacenamiento direccionable por el usuario? En segundo lugar, ¿qué recurso necesita exactamente? ¿Imagínate se está consumiendo aquí ? ¿Qué quiere decir con "memoria" que se consume?
Primero me interesan las respuestas a estas preguntas porque son una oportunidad para que aprendas cómo tu comprensión de la optimización y el manejo de la memoria es incorrecta, y segundo porque siempre quiero saber por qué los principiantes creen cosas extrañas, para que Puedo diseñar mejores herramientas para que tengan creencias correctas.