forked from extern/naming-cheatsheet
Comprehensive language-agnostic guidelines on variables naming. Home of the A/HC/LC pattern.
README.md |
Naming cheatsheet
Naming things is hard. Is it?
Guidelines
- Pick one naming convention and follow it. Whether it is
likeThis
, orlike_this
, or anyhow else, it does not matter. What matters is consistency in your work. - Name, whether of a variable, method, or something else, should be short, descriptive and intuitive:
- Short. Variable should not take long to type, and therefore to remember,
- Descriptive. Name of the variable should reflect what this variable possesses/does in the most efficient way,
- Intuitive. Name of the variable should read naturally, as close to common speach as possible
/* Bad namings */
const a = 5; // "a" could mean anything
const isPaginatable = (a > 10); // "Paginatable" sounds extremely unnatural
/* Good namings */
const postsCount = 5;
const shouldDisplayPagination = (postsCount > 10);
- Name should not duplicate the context when the latter is known, and when removing the context from the name does not decrease its readability:
class MenuItem {
/* Method name duplicates the context it is in "...MenuItem..." */
handleMenuItemClick = (event) => { ... }
/* This way it reads as MenuItem.handleClick() */
handleClick = (event) => { ... }
}
Methods
Pattern
prefix? + action (A) + high context (HC) + low context (LC)
Example
Name | Prefix | Action | High context | Low context |
---|---|---|---|---|
getPost |
get |
Post |
||
getPostData |
get |
Post |
Data |
|
handleClickOutside |
handle |
Click |
Outside |
|
shouldComponentUpdate |
should |
Component |
Update |
Actions
get
Access data immediately (i.e. shorthand getter of internal data).
function getFruitsCount() {
return this.fruits;
}
fetch
Request for data, which takes time (i.e. async request).
function fetchPosts(postCount) {
return fetch('https://api.dev/posts', { ... });
}
set
Declaratively set variableA
with valueA
to valueB
.
function Component() {
this.state = { fruits: 0 };
function setFruits(nextFruits) {
this.state.fruits = nextFruits;
}
}
reset
Set something back to its initial value.
const initialFruits = 5;
const fruits = initialFruits;
setFruits(10); // fruits = 10
function resetFruits() {
fruits = initialFruits;
}
resetFruits(); // fruits = 5
compose
Create new data from the existing one. Probably, applicable mostly to strings.
function composePageUrl(pageName, pageId) {
return `${pageName.toLowerCase()}-${pageId}`;
}
handle
Handler for a dedicated action. Usually, used as a callback method.
function handleLinkClick(event) {
event.preventDefault();
console.log('Clicked a link!');
}
link.addEventListener('click', handleLinkClick);
Prefixes
should
Prompting computation usually returninng Boolean
value.
const currentUrl = 'https://dev.com';
function shouldUpdateUrl(url) {
return (url !== currentUrl);
}