camelcase
Принудительное применение соглашения об именовании camelCase
Что касается именования переменных, руководства по стилю обычно делятся на два лагеря: camelcase (variableName) и нижнее подчеркивание (variable_name). Данное правило сосредоточено на использовании camelcase. Если ваше руководство по стилю требует camelCasing имён переменных, то это правило для вас!
Подробности правила
Это правило ищет нижние подчеркивания (_) в исходном коде. Оно игнорирует начальные и конечные подчеркивания, проверяя только те, что находятся посередине имени переменной. Если ESLint определит, что переменная является константой (все заглавные буквы), предупреждение не будет выведено. В противном случае будет выведено предупреждение. Это правило отмечает только определения и присваивания, но не вызовы функций. В случае ES6 import операторов, это правило нацелено только на имя переменной, которая будет импортирована в локальную область видимости модуля.
Параметры
Это правило имеет параметр в виде объекта:
-
"properties": "always"(по умолчанию) навязывает стиль camelcase для имён свойств -
"properties": "never"не проверяет имена свойств -
"ignoreDestructuring": false(по умолчанию) навязывает стиль camelcase для идентификаторов, полученных методом деструктуризации -
"ignoreDestructuring": trueне проверяет идентификаторы, полученные методом деструктуризации (но всё же проверяет любое использование этих идентификаторов позднее в коде) -
"ignoreImports": false(по умолчанию) навязывает стиль camelcase для импортов ES2015 -
"ignoreImports": trueне проверяет импорты ES2015 (но всё же проверяет любое использование импортов позднее в коде, за исключением аргументов функций) -
"ignoreGlobals": false(по умолчанию) навязывает стиль camelcase для глобальных переменных -
"ignoreGlobals": trueне навязывает стиль camelcase для глобальных переменных -
allow(string[]) список свойств, которые принимаются. Поддерживаются регулярные выражения.
properties: “always”
Примеры неправильного кода для этого правила с параметром { "properties": "always" } по умолчанию:
/*eslint camelcase: "error"*/
import { } from "external-module"
var = "#112C85";
function () {
// ...
}
obj. = function() {
// ...
};
function foo({ }) {
// ...
};
function bar({ isCamelcased: }) {
// ...
}
function baz({ = 'default value' }) {
// ...
};
var obj = {
: 1
};
var { = 1 } = query;
var { foo: } = bar;
var { foo: = 1 } = quz;
Примеры правильного кода для этого правила с параметром { "properties": "always" } по умолчанию:
/*eslint camelcase: "error"*/
import { no_camelcased as camelCased } from "external-module";
var myFavoriteColor = "#112C85";
var _myFavoriteColor = "#112C85";
var myFavoriteColor_ = "#112C85";
var MY_FAVORITE_COLOR = "#112C85";
var foo1 = bar.baz_boom;
var foo2 = { qux: bar.baz_boom };
obj.do_something();
do_something();
new do_something();
var { category_id: category } = query;
function foo({ isCamelCased }) {
// ...
};
function bar({ isCamelCased: isAlsoCamelCased }) {
// ...
}
function baz({ isCamelCased = 'default value' }) {
// ...
};
var { categoryId = 1 } = query;
var { foo: isCamelCased } = bar;
var { foo: isCamelCased = 1 } = quz;
properties: “never”
Примеры правильного кода для этого правила с параметром { "properties": "never" }:
/*eslint camelcase: ["error", {properties: "never"}]*/
var obj = {
my_pref: 1
};
obj.foo_bar = "baz";
ignoreDestructuring: false
Примеры неправильного кода для этого правила с параметром { "ignoreDestructuring": false } по умолчанию:
/*eslint camelcase: "error"*/
var { } = query;
var { = 1 } = query;
var { category_id: } = query;
var { category_id: } = query;
var { category_id: categoryId, ... } = query;
ignoreDestructuring: true
Примеры неправильного кода для этого правила с параметром { "ignoreDestructuring": true }:
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
var { category_id: } = query;
var { category_id, ... } = query;
Примеры правильного кода для этого правила с параметром { "ignoreDestructuring": true }:
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
var { category_id } = query;
var { category_id = 1 } = query;
var { category_id: category_id } = query;
Обратите внимание, что этот параметр применяется только к идентификаторам внутри шаблонов деструктуризации. Он не дополнительно разрешает какое-либо конкретное использование созданных переменных позднее в коде помимо уже разрешенного по умолчанию или другими параметрами.
Примеры дополнительного неправильного кода для этого правила с параметром { "ignoreDestructuring": true }:
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
var { some_property } = obj; // allowed by {ignoreDestructuring: true}
var foo = + 1; // error, ignoreDestructuring does not apply to this statement
Распространённым случаем использования этого параметра является избежание ненужного переименования, когда идентификатор не предназначен для использования позднее в коде.
Примеры дополнительного правильного кода для этого правила с параметром { "ignoreDestructuring": true }:
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
var { some_property, ...rest } = obj;
// do something with 'rest', nothing with 'some_property'
Ещё один распространённый случай использования этого параметра — в сочетании с { "properties": "never" }, когда идентификатор предназначен для использования только в качестве сокращения свойства.
Примеры дополнительного правильного кода для этого правила с параметрами { "properties": "never", "ignoreDestructuring": true }:
/*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/
var { some_property } = obj;
doSomething({ some_property });
ignoreImports: false
Примеры неправильного кода для этого правила с параметром { "ignoreImports": false } по умолчанию:
/*eslint camelcase: "error"*/
import { } from 'mod';
ignoreImports: true
Примеры неправильного кода для этого правила с параметром { "ignoreImports": true }:
/*eslint camelcase: ["error", {ignoreImports: true}]*/
import from 'mod';
import * as from 'mod';
Примеры правильного кода для этого правила с параметром { "ignoreImports": true }:
/*eslint camelcase: ["error", {ignoreImports: true}]*/
import { snake_cased } from 'mod';
ignoreGlobals: false
Примеры неправильного кода для этого правила с параметром { "ignoreGlobals": false } по умолчанию:
/*eslint camelcase: ["error", {ignoreGlobals: false}]*/
/* global no_camelcased */
const foo = ;
ignoreGlobals: true
Примеры правильного кода для этой правила с опцией { "ignoreGlobals": true }:
/*eslint camelcase: ["error", {ignoreGlobals: true}]*/
/* global no_camelcased */
const foo = no_camelcased;
разрешить
Примеры правильного кода для этой правила с опцией allow:
/*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/
function UNSAFE_componentWillMount() {
// ...
}
/*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/
function UNSAFE_componentWillMount() {
// ...
}
function UNSAFE_componentWillReceiveProps() {
// ...
}
Когда не следует использовать
Если у вас установлены стандарты кодирования с использованием другой системы именования (разделение слов подчеркиванием), выключите эту правила.
Версия
Это правило было введено в ESLint v0.0.2.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/camelcase