Spec-Zone.ru › ESLint

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" } по умолчанию:

Открыть в Playground
/*eslint camelcase: "error"*/

import { no_camelcased } from "external-module"

var my_favorite_color = "#112C85";

function do_something() {
    // ...
}

obj.do_something = function() {
    // ...
};

function foo({ no_camelcased }) {
    // ...
};

function bar({ isCamelcased: no_camelcased }) {
    // ...
}

function baz({ no_camelcased = 'default value' }) {
    // ...
};

var obj = {
    my_pref: 1
};

var { category_id = 1 } = query;

var { foo: snake_cased } = bar;

var { foo: bar_baz = 1 } = quz;

Примеры правильного кода для этого правила с параметром { "properties": "always" } по умолчанию:

Открыть в Playground
/*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" }:

Открыть в Playground
/*eslint camelcase: ["error", {properties: "never"}]*/

var obj = {
    my_pref: 1
};

obj.foo_bar = "baz";

ignoreDestructuring: false

Примеры неправильного кода для этого правила с параметром { "ignoreDestructuring": false } по умолчанию:

Открыть в Playground
/*eslint camelcase: "error"*/

var { category_id } = query;

var { category_name = 1 } = query;

var { category_id: category_title } = query;

var { category_id: category_alias } = query;

var { category_id: categoryId, ...other_props } = query;

ignoreDestructuring: true

Примеры неправильного кода для этого правила с параметром { "ignoreDestructuring": true }:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { category_id: category_alias } = query;

var { category_id, ...other_props } = query;

Примеры правильного кода для этого правила с параметром { "ignoreDestructuring": true }:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { category_id } = query;

var { category_id = 1 } = query;

var { category_id: category_id } = query;

Обратите внимание, что этот параметр применяется только к идентификаторам внутри шаблонов деструктуризации. Он не дополнительно разрешает какое-либо конкретное использование созданных переменных позднее в коде помимо уже разрешенного по умолчанию или другими параметрами.

Примеры дополнительного неправильного кода для этого правила с параметром { "ignoreDestructuring": true }:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { some_property } = obj; // allowed by {ignoreDestructuring: true}
var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

Распространённым случаем использования этого параметра является избежание ненужного переименования, когда идентификатор не предназначен для использования позднее в коде.

Примеры дополнительного правильного кода для этого правила с параметром { "ignoreDestructuring": true }:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreDestructuring: true}]*/

var { some_property, ...rest } = obj;
// do something with 'rest', nothing with 'some_property'

Ещё один распространённый случай использования этого параметра — в сочетании с { "properties": "never" }, когда идентификатор предназначен для использования только в качестве сокращения свойства.

Примеры дополнительного правильного кода для этого правила с параметрами { "properties": "never", "ignoreDestructuring": true }:

Открыть в Playground
/*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/

var { some_property } = obj;
doSomething({ some_property });

ignoreImports: false

Примеры неправильного кода для этого правила с параметром { "ignoreImports": false } по умолчанию:

Открыть в Playground
/*eslint camelcase: "error"*/

import { snake_cased } from 'mod';

ignoreImports: true

Примеры неправильного кода для этого правила с параметром { "ignoreImports": true }:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreImports: true}]*/

import default_import from 'mod';

import * as namespaced_import from 'mod';

Примеры правильного кода для этого правила с параметром { "ignoreImports": true }:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreImports: true}]*/

import { snake_cased } from 'mod';

ignoreGlobals: false

Примеры неправильного кода для этого правила с параметром { "ignoreGlobals": false } по умолчанию:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreGlobals: false}]*/
/* global no_camelcased */

const foo = no_camelcased;

ignoreGlobals: true

Примеры правильного кода для этой правила с опцией { "ignoreGlobals": true }:

Открыть в Playground
/*eslint camelcase: ["error", {ignoreGlobals: true}]*/
/* global no_camelcased */

const foo = no_camelcased;

разрешить

Примеры правильного кода для этой правила с опцией allow:

Открыть в Playground
/*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/

function UNSAFE_componentWillMount() {
    // ...
}
Открыть в Playground
/*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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API