Ci sono momenti in cui i valori di enum sono importanti: non è necessario che siano unici, hanno anche bisogno di avere valori specifici. In questi casi, i valori dovrebbero essere esplicitamente definiti, anche se coincidono con i valori predefiniti? Un esempio:
enum Car {
DeLorean = 0,
Lada = 1
};
Immagina che per qualsiasi ragione la tua applicazione presuma che DeLorean
e Lada
abbiano quei valori specifici. Per inciso, sono uguali ai valori predefiniti, ma ciò significa che non è più necessario utilizzare definizioni esplicite?
Lasciandoli impliciti mi fa sentire a disagio. Mi sembra che averli esplicitamente definiti stia comunicando ai futuri programmatori che i valori specifici sono importanti e aiuta a prevenire errori come questo:
enum Car {
Dacia,
DeLorean,
Lada
};
Nell'esempio sopra, un altro programmatore che non è a conoscenza della restrizione menzionata introduce un nuovo valore enum e, volendo mantenere il codice in ordine, lo mette in ordine alfabetico. Tuttavia, DeLorean
e Lada
ora hanno valori numerici diversi e un bug potenzialmente silenzioso è stato introdotto.
Il mio ragionamento mi sembra corretto (ovviamente), ma il team di revisione del codice per una società con cui lavoravo non era d'accordo. Mi sbaglio?