Risponderò, non perché penso che le altre risposte siano cattive, ma perché penso che ci sia un'altra cosa da dire in questo caso.
Abbiamo due domande in una:
- Informazioni sulle migliori pratiche per te Enum
- Informazioni sul refactoring di un Enum
1)Is this a Best Practice with Enum in C#?
Bene, nel tuo caso, dal momento che Enum sembra essere un po 'gerarchico, li definirei come flag e ne traggo vantaggio quando utilizzo e confronti i valori.
[Flags]
enum Designation
{
None = 0x0,
TeamLead = 0x1,
Manager = 0x2,
Associate = 0x4
}
Quindi potresti usare un codice come questo:
string CheckAboveManager(Designation designation)
{
if (designation >= Designation.Manager)
return "It's a manager or higher";
return "Is lower than manager";
}
L'altra opzione di usare una struttura orientata agli oggetti funzionerà solo se c'è un comportamento o una struttura specifici con cui vuoi separare le preoccupazioni. Se si tratta solo di definire una proprietà (che è il motivo per cui esistono enumerazioni!), Non vedo la necessità di creare ereditarietà, ma se è il caso, utilizzare risposta accettata .
2) Now if we decide to change the enum element from "TeamLead" to
"Lead" then we have to modify the above line of code as well i.e.
designation == Designation.TeamLead to designation == Designation.Lead
Bene, è già stato ben spiegato che il refactoring non è un problema se stai usando VS IDE, puoi anche usare altri strumenti come DevExpress CodeRush! o ReSharper a ottenere un risultato ancora migliore (e molto sicuro) dal refactoring.