diff --git a/README.md b/README.md index 2c6c5c6c7d..49f554e2cf 100644 --- a/README.md +++ b/README.md @@ -3139,6 +3139,44 @@ Other Style Guides ]; ``` + + - [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