... | ... | @@ -284,21 +284,23 @@ Don't start things with underscores. According to Stroustrup's C++ book: |
|
|
|
|
|
Class names are `LikeThis`, methods are `likeThis()`, variables are `like_this`, and constants are `LIKE_THIS`. Data class members are `like_this_`.
|
|
|
|
|
|
Enumerations are written as
|
|
|
## Enums
|
|
|
|
|
|
Enumerations should be strongly typed to avoid undefined behavior when integer values outside the range of the enumeration values are given. If there is no reason to use a particular integral type, use `int`. See [expr.static.cast#10](https://timsong-cpp.github.io/cppwp/n3337/expr.static.cast#10) in the C++ standard for an explanation. This can be written as:
|
|
|
|
|
|
```cpp
|
|
|
enum EnumName {
|
|
|
FOO,
|
|
|
BAR
|
|
|
} enum_instance;
|
|
|
enum ExamplePortNumbers : int {
|
|
|
DNS = 53,
|
|
|
DHCP = 68,
|
|
|
};
|
|
|
```
|
|
|
|
|
|
Note that unless you have a specific reason to set specific values, leave specific values off. These can be written if needed:
|
|
|
Unless there is a good reason to have flexible enumerators without values, set values for all enumerators. Some enumerators have corresponding values in other components, such as in the database. It's good to have these values explicitly defined rather than relying on defaults even if the values are identical to the defaults.
|
|
|
|
|
|
```cpp
|
|
|
enum ExamplePortNumbers {
|
|
|
DNS = 53,
|
|
|
DHCP = 68
|
|
|
enum EnumName : int {
|
|
|
FOO = 0,
|
|
|
BAR = 1,
|
|
|
};
|
|
|
```
|
|
|
|
... | ... | |