Prefer initializing each enums member value (prefer-enum-initializers
)
This rule recommends having each enum
s member value explicitly initialized.
enum
s are a practical way to organize semantically related constant values. However, by implicitly defining values, enum
s can lead to unexpected bugs if it's modified without paying attention to the order of its items.
Rule Details
enum
s infers sequential numbers automatically when initializers are omitted:
enum Status {
Open, // infer 0
Closed, // infer 1
}
If a new member is added to the top of Status
, both Open
and Closed
would have its values altered:
enum Status {
Pending, // infer 0
Open, // infer 1
Closed, // infer 2
}
Examples of code for this rule:
- β Incorrect
- β Correct
enum Status {
Open = 1,
Close,
}
enum Direction {
Up,
Down,
}
enum Color {
Red,
Green = 'Green'
Blue = 'Blue',
}
enum Status {
Open = 'Open',
Close = 'Close',
}
enum Direction {
Up = 1,
Down = 2,
}
enum Color {
Red = 'Red',
Green = 'Green',
Blue = 'Blue',
}
When Not To Use It
If you don't care about enum
s having implicit values you can safely disable this rule.
Attributes
- β Recommended
- π§ Fixable
- π Requires type information