Spec-Zone.ru › ESLint

camelcase

Соблюдение соглашения об именовании в стиле camelCase

❄️ Заморожено

В настоящее время это правило заморожено, поэтому запросы на новые возможности не принимаются.

При выборе имен переменных руководства по стилю обычно делятся на два лагеря: camelCase (variableName) и подчеркивания (variable_name). Это правило посвящено использованию подхода camelCase. Если руководство по стилю требует именовать переменные в стиле camelCase, это правило для вас!

Описание правила

Это правило ищет в исходном коде символы подчеркивания (_). Оно игнорирует подчеркивания в начале и конце имени и проверяет только те, что находятся внутри имени переменной. Если ESLint определит, что переменная является константой (состоит только из заглавных букв), предупреждение выдано не будет. В противном случае будет выдано предупреждение. Это правило отмечает только объявления и присваивания, но не вызовы функций. В случае инструкций import ES6 это правило проверяет только имя переменной, которая будет импортирована в локальную область видимости модуля.

Параметры

У этого правила есть параметр-объект:

  • "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"

const 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' }) {
    // ...
};

const obj = {
    my_pref: 1
};

const { category_id = 1 } = query;

const { foo: snake_cased } = bar;

const { foo: bar_baz = 1 } = quz;

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

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

import { no_camelcased as camelCased } from "external-module";

const myFavoriteColor   = "#112C85";
const _myFavoriteColor  = "#112C85";
const myFavoriteColor_  = "#112C85";
const MY_FAVORITE_COLOR = "#112C85";
const foo1 = bar.baz_boom;
const foo2 = { qux: bar.baz_boom };

obj.do_something();
do_something();
new do_something();

const { category_id: category } = query;

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

function bar({ isCamelCased: isAlsoCamelCased }) {
    // ...
}

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

const { categoryId = 1 } = query;

const { foo: isCamelCased } = bar;

const { foo: camelCasedName = 1 } = quz;

properties: “never”

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

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

const obj = {
    my_pref: 1
};

obj.foo_bar = "baz";

ignoreDestructuring: false

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

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

const { category_id } = query;

const { category_name = 1 } = query;

const { category_id: category_title } = query;

const { category_id: category_alias } = query;

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

ignoreDestructuring: true

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

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

const { category_id: category_alias } = query;

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

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

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

const { category_id } = query;

const { category_name = 1 } = query;

const { category_id_name: category_id_name } = query;

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

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

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

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

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

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

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

const { 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}]*/

const { 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

Примеры правильного кода для этого правила с параметром 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