He claims that the 0 should be a constant, and actually docked me marks because of that.
Sono d'accordo. L'uso di zero qui è "magico". Immagina di leggere questo codice per la prima volta. Non sai perché lo zero è speciale e il letterale non ti dice nulla sul perché lo zero è speciale. Se invece hai detto if(comboVendor.SelectedIndex == CreateNewVendorIndex)
, diventa estremamente chiaro al primo lettore che cosa significa il codice.
He claims I shouldn't use literals in my code at all.
Questa è una posizione estrema; una posizione realistica sarebbe dire che l'uso di letterali è una bandiera rossa che indica che il codice potrebbe non essere chiaro come potrebbe essere. A volte è appropriato.
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
Il fatto che non cambierà mai è un motivo eccellente per renderlo una costante . Ecco perché le costanti sono chiamate costanti; perché non cambiano mai.
nor is it something that you would need to tweak.
Davvero? Non puoi vedere nessuna situazione in cui qualcuno potrebbe voler cambiare l'ordine delle cose in una casella combinata?
Il fatto che tu possa vedere una ragione per cui questo potrebbe cambiare in futuro è una buona ragione per non renderla una costante. Piuttosto dovrebbe essere un campo intero statico di sola lettura non costante. Una costante dovrebbe essere una quantità che è garantita per mantenere lo stesso per sempre . Pi e il numero atomico dell'oro sono buone costanti. I numeri di versione non lo sono; cambiano ogni versione. Il prezzo dell'oro è ovviamente una terribile costante; cambia ogni secondo. Rende solo costante cose che non cambiano mai, mai .
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.
Ora arriviamo al nocciolo della questione.
Questa è forse la riga più importante nella tua domanda perché indica che hai una profonda conoscenza imperfetta della (1) memoria e (2) ottimizzazione. Sei a scuola per imparare, e ora sarebbe un grande momento per avere una corretta comprensione dei fondamenti. Puoi spiegare in dettaglio perché ritieni che "sia uno spreco di memoria mantenere un solo zero in memoria"? Innanzitutto, perché credi che l'ottimizzazione dell'utilizzo di quattro byte di memoria in un processo con almeno due miliardi di byte di memoria indirizzabile dall'utente sia rilevante? Secondo, esattamente quale risorsa utilizzi immagina che venga consumato qui ? Cosa intendi con "consumo" di memoria?
Sono interessato alle risposte a queste domande perché sono l'occasione per imparare come la tua comprensione dell'ottimizzazione e della gestione della memoria non sono corrette, e secondo perché voglio sempre sapere perché i principianti credono in cose bizzarre, quindi Posso progettare strumenti migliori per portarli ad avere credenze corrette.