He claims that the 0 should be a constant, and actually docked me marks because of that.
Eu concordaria. O uso de zero aqui é "mágico". Imagine que você está lendo este código pela primeira vez. Você não sabe porque o zero é especial, e o literal não informa nada sobre o porquê de zero ser especial. Se em vez disso você disse if(comboVendor.SelectedIndex == CreateNewVendorIndex)
, então fica extremamente claro para o leitor de primeira viagem o que o código significa.
He claims I shouldn't use literals in my code at all.
Essa é uma posição extrema; uma posição realista seria dizer que o uso de literais é uma bandeira vermelha que indica que o código pode não ser tão claro quanto poderia ser. Às vezes é apropriado.
The thing is, I don't understand why I would want to make that code in that situation a constant. That index will never change
O fato de que isso nunca mudará é uma razão excelente para torná-lo constante . É por isso que constantes são chamadas constantes; porque eles nunca mudam.
nor is it something that you would need to tweak.
Realmente? Você não pode ver qualquer situação em que alguém pode querer mudar a ordem das coisas em uma caixa de combinação?
O fato de você poder ver uma razão pela qual isso pode mudar no futuro é uma boa razão para não torná-lo uma constante. Em vez disso, ele deve ser um campo inteiro estático somente leitura e não constante. Uma constante deve ser uma quantidade garantida para permanecer a mesma para todo o tempo . Pi e o número atômico de ouro são boas constantes. Números de versão não são; eles mudam todas as versões. O preço do ouro é obviamente uma constante terrível; muda a cada segundo. Apenas faça constante coisas que nunca, nunca mudam .
It seems like a waste of memory to keep a single 0 in memory that's used for a very specific situation and never changes.
Agora chegamos ao cerne da questão.
Esta é talvez a linha mais importante em sua pergunta, porque indica que você tem uma compreensão profundamente falha da (1) memória e (2) otimização. Você está na escola para aprender e agora seria um ótimo momento para entender corretamente os fundamentos. Você pode explicar em detalhes por que você acredita que "é um desperdício de memória manter um único zero na memória"? Primeiramente, por que você acredita que otimizar o uso de quatro bytes de memória em um processo com pelo menos dois bilhões de bytes de armazenamento endereçável pelo usuário é relevante? Segundo, precisamente qual recurso você usa? imagine está sendo consumido aqui ? O que você quer dizer com "memória" sendo consumida?
Estou interessado nas respostas a estas perguntas primeiro porque elas são uma oportunidade para você aprender como seu entendimento de otimização e gerenciamento de memória está incorreto, e segundo porque eu sempre quero saber porque iniciantes acreditam em coisas estranhas, então Eu posso projetar ferramentas melhores para levá-las a ter crenças corretas.