Перейти к содержанию
bslls:MagicNumber

Магические числа (MagicNumber)

  • Тип: Дефект кода
  • Важность: Незначительный
  • Включена по умолчанию: Да
  • Теги: badpractice

Описание диагностики

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

Примеры

Плохо

Функция ПопадаетВИнтервал(Длительность)

    Возврат Длительность < 10 * 60 * 60;

КонецФункции

Хорошо

Функция ПопадаетВИнтервал(ДлительностьВСекундах)

    МинутВЧасе      = 60;
    СекундВМинуте   = 60;
    СекундВЧасе     = СекундВМинуте * МинутВЧасе;
    ЧасовВИнтервале = 10;
    Возврат Длительность < ЧасовВИнтервале * СекундВЧасе;

КонецФункции

Исключения

Магические числа, используемые в структурах и соответствиях, не считаются ошибками, так как они используются в качестве ключей или значений в структурах данных, где контекст понятен:

// Операция Вставить структуры - нет ошибки
Структура = Новый Структура;
Структура.Вставить("МояПеременная", 20); // Нет ошибки
Структура.Вставить("ДругаяПеременная", 42); // Нет ошибки

// Конструктор структуры - нет ошибки
Структура2 = Новый Структура("Поле1, Поле2", 5, 15); // Нет ошибки

// Прямое присваивание свойству структуры - нет ошибки
СтруктураСПолями = Новый Структура("МояПеременная, ДругоеПоле");
СтруктураСПолями.МояПеременная = 20; // Нет ошибки
СтруктураСПолями.ДругоеПоле = 50; // Нет ошибки

// Фиксированная структура - нет ошибки
ФиксированнаяСтруктура = Новый ФиксированнаяСтруктура("Значение", 200); // Нет ошибки

// Соответствие - нет ошибки (как ключ, так и значение)
Соответствие = Новый Соответствие;
Соответствие.Вставить("Код", 123); // Нет ошибки
Соответствие.Вставить(1980, "Олимпиада в Москве"); // Нет ошибки

Соответствие стандартам

Нет подтверждённых связей со стандартами.

Источник диагностики