Именование сущностей
Именование очень важно в разработке ПО. Как мы знаем, код пишется в первую очередь для людей, которые будут его читать(для программистов). Неудачное именование может существенно повысить трудозатраты на разработку или поддержку проекта из-за того, что будет тратится лишнее время на чтение кода, т.к. при плохом нейминге затруднён процесс интерпретации «что есть что в коде».
Существуют разные синтаксические формы наименования, их очень много, некоторые уже не употребляются. Вот самые употребимые в js:
- Верблюжья нотация (CamelCase): MyClass
- Змеиная нотация (snake_case): my_const
- Шашлычная нотация (kebab-case): my-data
При выборе кейса важно учитывать принятый на текущий момент стандарт. В js на сегодняшний день snake_case и kebab-case не приняты, но их можно встретить например на Python или Ruby.
Однобуквенные идентификаторы
В институтах очень часто используют однбуквенные идентификаторы в коде. Я вижу этот стиль кодирования у половины ребят, которые приходят после ВУЗов. Это очень порочная практика. Название должно наглядно описывать сущность. В наше время использовать однобуквенные идентификаторы — признак дурного тона. Исключениями могут быть счётчики и индексы, т.е. ситуации, где и одной буквы более чем достаточно для передачи сути сущности.
Транслит в имени
Также очень популярно среди студентов использовать транслит. Разумеется это тоже признак дурного тона и плохого кода. Никакого транслита в нейминге быть не должно, т.к. общепринятым языком в программировании является английский. Разрабатывая код мы должны использовать международный язык, который знают профессионалы в любой стране. Русский транслит к таковым не относится.
Именование переменных и классов
Переменные именуются в lower camelCase:
const maxCount = 10;
Классы именуются в CamelCase:
class EnumerableCollection { //some code }
Действия
Очень важно для нейминга действий(например, функций) использовать глаголы. Нужно выбирать такой глагол. который соответствует типу действия.
Например:
const checkNumberIsEven = (number) => (number % 2 === 0);
checkNumberIsEven — хорошее название. сразу понятно, что функция проверяет число на чётность.
Также хорошее название isEven — если эта функция лежит в каком — нибудь /helpers/number.js, то даже такого короткого названия более чем достаточно, т.к. сама директория указывает нам на то, что в неё лежат функции по работе с числами.(но даже тут можно использовать первый вариант, т.к. в файле, который использует данную функцию, может быт довольно много кода, а вызов быть где нибудь в середине. )
Функции далеко не всегда являются действиями, это тоже важно понимать.
Например,
const arifmeticalProgression = (start, depth, maxLength = 10) => { const progression = [start]; const iter = (acc) => { if (acc.length >= maxLength) { return acc; } const newIndex = acc.length; const newItem = start + newIndex * depth; const newProgresion = [].concat(acc, newItem); return iter(newProgresion); }; return iter(progression); };
Эта функция генерирует нам арифметическую прогрессию, но действием не является, т.к. в виду своей декларативности считается определение арифметической прогрессии. Важно уметь различать этот момент. Сюда же относятся функции определяющие константы.
const defaultCollection = () => ([]);
Предикаты
Выше мы обсуждали функцию
const checkNumberIsEven = (number) => (number % 2 === 0);
Такой тип функций называют предикатами. Предикат — утверждение о чём либо. Так называют функции выполняющиеся проверки «сущность есть что-то». Предикат в программирование всегда возвращает булевое значение.
Как правило предикаты именуются через форму третьего лица единственого числа английского вспомогательного глагола to be, т.е. is.
const isEven = (number) => (number % 2 === 0);
Некоторые предикаты определяют вхождение(наличие) искомого элемента(свойства или метода или item’a) в сущности. Такие предикаты. как правило начинаются с английского глагола has(3е лицо единственное число глагола to have). Например, безопасная форма Object.prototype.hasOwnProperty может выглядеть так:
const hasProp = (obj, key) => (Object.prototype.hasOwnProperty.call(obj, key));
Если сущность представляет собой количество чего-либо, то стоит использовать слово count в названии.
ссылка на оригинал статьи https://habr.com/ru/post/488378/
Добавить комментарий