mirror of
https://github.com/airbnb/javascript.git
synced 2026-01-13 17:57:55 -05:00
[guide] Added naming conventions for UPPERCASE use cases
Merge pull request #255 from estelle/master
This commit is contained in:
38
README.md
38
README.md
@@ -3139,6 +3139,44 @@ Other Style Guides
|
||||
];
|
||||
```
|
||||
|
||||
<a name="naming--uppercase"></a>
|
||||
- [23.10](#naming--uppercase) You may optionally uppercase a constant only if it (1) is exported, (2) is a `const` (it can not be reassigned), and (3) the programmer can trust it (and its nested properties) to never change.
|
||||
|
||||
> Why? This is an additional tool to assist in situations where the programmer would be unsure if a variable might ever change. UPPERCASE_VARIABLES are letting the programmer know that they can trust the variable (and its properties) not to change.
|
||||
- What about all `const` variables? - This is unnecessary, so uppercasing should not be used for constants within a file. It should be used for exported constants however.
|
||||
- What about exported objects? - Uppercase at the top level of export (e.g. `EXPORTED_OBJECT.key`) and maintain that all nested properties do not change.
|
||||
|
||||
```javascript
|
||||
// bad
|
||||
const PRIVATE_VARIABLE = 'should not be unnecessarily uppercased within a file';
|
||||
|
||||
// bad
|
||||
export const THING_TO_BE_CHANGED = 'should obviously not be uppercased';
|
||||
|
||||
// bad
|
||||
export let REASSIGNABLE_VARIABLE = 'do not use let with uppercase variables';
|
||||
|
||||
// ---
|
||||
|
||||
// allowed but does not supply semantic value
|
||||
export const apiKey = 'SOMEKEY';
|
||||
|
||||
// better in most cases
|
||||
export const API_KEY = 'SOMEKEY';
|
||||
|
||||
// ---
|
||||
|
||||
// bad - unnecessarily uppercases key while adding no semantic value
|
||||
export const MAPPING = {
|
||||
KEY: 'value'
|
||||
};
|
||||
|
||||
// good
|
||||
export const MAPPING = {
|
||||
key: 'value'
|
||||
};
|
||||
```
|
||||
|
||||
**[⬆ back to top](#table-of-contents)**
|
||||
|
||||
## Accessors
|
||||
|
||||
Reference in New Issue
Block a user