Разработчику > Соглашение по оформлению кода JS > Декларации

Декларации.

  1. Каждый проект должен минимизировать количество глобальных переменных и функций, в идеале только одна или вообще без них. Т.е. если переменная не глобальная, то всегда использовать “var” для ее определения (ESLint). А если функция не глобальная, то она всегда должна быть использована в текущем скрипте.
  2. Имитирование пространства имен также делать через глобальную переменную. Не расширять напрямую чужие внешние глобальные объекты/пространства имен, использовать для этого только специальные библиотеки. Псевдонимы использовать только для последней части имени в пространстве имен.
  3. Декларация объекта или массива одной строкой допустима только если она короткая, иначе каждое свойство/элемент должны записываться в отдельной строке.
  4. Запрещены дополнительные запятые в конце деклараций массивов, объектов (ESLint).
  5. Запрещено использование наименований переменных и функций, совпадающих с зарезервированными словами JS (ESLint) и глобальных переменных вспомогательных библиотек.
  6. Следует избегать сложных имен свойств объекта в декларации. Если этотого избежать не удалось, то сложные имена необходимо указывать в кавычках (ESLint).
  7. Для наименований функций-конструкторов (классов) использовать UpperCamelCase, при их вызове (через “new”) всегда использовать круглые скобки после имени класса. Если после создания объекта сразу следует обращение к его свойствам, то обрамлять всю конструкцию в круглые скобки (ESLint).
  8. Для констант использовать обычные переменные или свойства объекта-перечисления, при этом для наименований переменных и объекта перечисления использовать прописные буквы через подчеркивание, а для свойств объекта-перечисления UpperCamelCase (ESLint).
  9. Для переменных, свойств объектов и обычных функций использовать lowerCamelCase (ESLint).
  10. Следует использовать осмысленные названия переменных за исключением простейших переменных с очевидным применением (например переменная цикла i).
  11. Для скрытых функций и переменных дописывать в конце знак подчеркивания.
  12. Запрещено объявление функции внутри блока кода (if/while/else/etc...) за исключением вложенных анонимных функций (ESLint).
  13. Не передавайте параметры функции напрямую в декларацию вложенной (анонимной) функции, которая будет вызываться в другой момент времени. Использовать для этого либо отдельные локальные переменные, либо выносить декларацию функции в отдельную именованную функцию (ESLint).
  14. Никогда не используйте аргумент функции arguments, он будет более приоритетным над объектом arguments, который доступен без объявления для каждой функции.
  15. Запрещено использование массива параметров функции (функции с переменным количеством параметров). Вместо этого рекомендуется использовать параметр-объект.
  16. Количество параметров функции ограничено 10 (ESLint).
  17. Запрещено использование объектов-оберток для примитивных типов (ESLint).
  18. Запрещено ручное использование прототипов.
  19. Не использовать Array в качестве ассоциативного массива (ESLint).
  20. Для создания пустого объекта использовать “{}”, вместо “new Object()” (ESLint).
  21. Для создания массива использовать “[]”, вместо «new Array()» (ESLint).
  22. Используйте раздельные функции для доступа к значениям объекта, т.е. не использовать функции с различным вариантом возвращения данных (ESLint).
  23. Запрещено переопределять стандартный метод toString(). Переопределение разрешено только при работе с отладчиком.
  24. Для имен переменных ссылок на this при передаче во вложенные функции допустимы имена: "that", "self", "_this", "_that", "_self" (ESLint).