Перша та найголовніша ознака хорошо коду - його читабельність. Тому це так надважливо, щоб змінні, методи та функції легко читалися та були зрозумілими.
Як я називаю змінні?
Є два обмеження на імена змінних:
- Ім’я може складатися з літер, цифр, та символів «$» та «_»
- Перший символ не повинен бути цифрою
Врахуйте, регістр літер має значення:
const text = 'Some text'; // Зовсім інший «текст» const Text = 'Another text';
Константи
Константи необхідні, щоб уникнути появи magic numbers. У JavaScript до ES-2015 не було констант (const), але оскільки необхідність у них все ж таки була і до того, то була негласна домовленість: змінні, набрані у верхньому регістрі через підкреслення (UPPER_SNAKE_CASE), не змінювати:
const API_TOKEN = '********';
const THEME_TYPE = 'dark';
...
Рядки
Традиційно назва рядкової змінної - іменник. Як і скрізь, ми повинні розуміти, що знаходиться в змінній за її назвою. З рядком складно напортачити, використовуйте іменники і давайте більш осмислені імена, наприклад:
const title = 'Як іменувати змінні';
const category = 'JavaScript';
const formError = 'This field is required';
...
Числа
З числами вже цікавіше, можна зустріти загальні практики, які є майже в кожному проекті:
- Розмір (size)
- Довжина (length)
- Номер (number)
- Кількість (count)
- Крок (step)
- Код (code)
Тут все логічно:
const windowSize = 1200
const maxCharacterLength = 20
const orderNumber = 1
const itemsCount = 100
const currentStep = 2
const keyCode = 123
...
Булеве значення
Найкраща назва для булевої змінної - питання з відповіддю так-ні. Також часто зустрічаються у вигляді префіксів і суфіксів слова:
- Це (is)
- Містить (has/contain)
- Може (can)
- Повинен (shoud)
- Можливість (able)
const isActive = true;
const hasNumbers = false;
const canEdit = true;
const shouldUpdate = false;
const disabled = false;
...
Масиви
Масиви - це іменники у множині. Закінчуються на суфікси s та es.
const items = [{id: 1, title: 'First item'}];
const categories = ['JavaScript", "Best practice'];
...
Об’єкти
Так само як і рядки. Мені це не дуже подобається, так як не можна відразу відрізнити рядок від об’єкта. Можна додавати суфікс obj, але це вже зайве.
Важливе правило не дублюйте назву об’єкта в назві властивості або методу:
// Плохо
const user = {
userName: 'Admin',
getUsername() {},
};
// Хорошо
const user = {
name: 'Admin',
getName() {},
};
...
Функції та методи
Для функцій перше слово дієслово:
- init/initialize
- compute
- find
- create (object, array…)
- to (string, number)
- filter
const initApp = () => {};
const computeLength = () => {};
const findFirstLetter = () => {};
const toNumber = () => {};
const filterItems = () => {};
...
Симетрична пара
Загальні:
- old/new
- begin/end
- first/last
- up/down
- min/max
- next/previous
const newTitle = 'New Title';
const beginPosition = [0, 0];
const firstItem = [{name: 'First Item'}];
const maxWidth = 240;
const nextPage = 2;
...
Для функцій:
- get/set
- add/remove
- create/destroy
- start/stop
- insert/delete
- increment/decrement
- open/close
- show/hide
- suspend/resume
const getUser = () => {};
const removeItem = () => {};
const openPopup = () => {};
const showBanner = () => {};
...
JQuery
Всі змінні, що містять об’єкт jQuery, найкраще назвати, починаючи з символу $. Повірте, така невелика хитрість заощаджує багато часу.
const $someElement = $('#some_element');
const $input = $('#input');
...
Якщо ви новачок у програмуванні, або у вас погано з англійською мовою, то ось вам лайфхак:
- Добре подумайте та назвіть змінну українською мовою
- Переведіть її через Google Translate