Якщо у вас немає вагомих причин використовувати необроблені значення, ви повинні завжди використовувати лише неявні значення та посилатись на них з Status.Active
та Status.Inactive
.
Суть полягає в тому, що ви, можливо, захочете зберігати дані у плоському файлі чи БД, або використовувати плоский файл або БД, які створив хтось інший. Якщо ви робите це самостійно, зробіть так, щоб нумерація відповідала тому, для чого використовується Enum.
Якщо дані не ваші, звичайно, ви хочете використовувати все те, що оригінальний розробник використовував як схему нумерації.
Якщо ви плануєте використовувати Enum як набір прапорів, існує проста конвенція, якої варто дотримуватися:
enum Example
{
None = 0, // 0
Alpha = 1 << 0, // 1
Beta = 1 << 1, // 2
Gamma = 1 << 2, // 4
Delta = 1 << 3, // 8
Epsilon = 1 << 4, // 16
All = ~0, // -1
AlphaBeta = Alpha | Beta, // 3
}
Значення мають бути двома потужностями і можуть бути виражені за допомогою операцій зсуву бітів. None
, очевидно, має бути 0
, але All
менш очевидно -1
. ~0
є двійковим запереченням 0
і приводить до числа, для якого встановлено кожен біт 1
, який представляє значення-1
. Для складених прапорів (які часто використовуються для зручності) інші значення можуть бути об'єднані за допомогою бітового або оператора |
.