Волшебное число перебивает - PullRequest
0 голосов
/ 03 апреля 2019

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

if (validateRejectionCategory(rejectionData[0])) {
    ......
}

В этом случае 0 все еще считается магическим числом?Должен ли я абстрагироваться от 0 до переменной типа REJECTION_CATEOGRY_POSITION?Разве имя функции не дает достаточно ясного представления о том, что значение будет rejectionCategory?

Дайте мне знать ваши мысли, пожалуйста.

1 Ответ

1 голос
/ 13 мая 2019

Как правило, извлечение каждого числового значения в константу является плохой привычкой. Вы должны поддерживать равновесие, как и все вещи в жизни. Здесь ясно, что вы хотите проверить первый элемент rejectionData. Большинство вариантов использования 0, 1, 2 не являются магическими, но используются в алгоритме.

Обычно вы хотите извлечь числовые значения, которые трудно объяснить в контексте кода.

например. если ваш код выглядит так в каком-то основном файле:

app.modalTimeooutSeconds = 3.0

на самом деле не так удобнее переписать его как

let timeoutSeconds = 3.0
app.modalTimeoutSeconds = timeoutSeconds

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

Все зависит от контекста, и хороших ответов нет.

...