Показать сообщение отдельно
Старый 23.09.2020, 22:43   #20
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от Crystal Посмотреть сообщение
3. Ну это со стороны непонятно, а автор этого кода знает что они значат )
Для работы в команде программистов я думаю это важно,
но когда код для себя, так сказать не опен, то собственно нет.
Насчёт свитчей мне уже указывали ранее на булке, и я эту технологию
внедрил в том моменте, про который говорили, но тем не менее наблюдая
не увидел никаких преимуществ, ни в скорости работы, ни в принципе.
По этому в основном набирая быстро код мне проще накидать ifов, чем этот список строить.
Это классический антипаттерн "Magic Numbers", поищи по этому запросу в Интернете, думаю, что ты найдёшь много хороших разъяснений, что это такое, и почему так делать не надо.

Если кратко, то вот что я бы лично для себя выделил:
  • Часто бывает нужно потом эти числа поменять, и удобнее, если они все будут находиться где-то в одном месте, а не искать, где они у тебя по коду раскиданы.
  • Часто бывает, что одну и ту же константу (или переменную) ты используешь потом ещё где-то, и тогда уже придётся следить, чтобы они в двух местах были одинаковы. При использовании "магических чисел" это ещё один фактор, по причине которого можно лохануться, а потом искать причину.
  • Свой код кроме тебя самого, даже если ты работаешь не в команде, будешь читать ещё и ты сам, но спустя месяц, например. Вот попробуй открой какой-нибудь старый проект, который ты как минимум уже месяц не открывал, и попытайся вспомнить, что же это число означает, и почему оно именно такое?

Конечно же, доводить до полного абсолюта эту идею тоже не надо.
Если где-то нет других вариантов, то пишем число.
Например, если надо что-то обнулить, то, понятное дело, нельзя обнулить что-то с числом 2.71. Обнуляют всегда с нулём. Поэтому и пишем просто 0, других вариантов нет, надобности заводить переменную "zero" тоже нет.

Циклы for бывают чаще всего с 0, но бывают и с 1, но там тоже обычно нет вариантов. Поэтому переменные "zero" и "one" тоже не нужны.

Бывает ещё чего-то нужно вдвое больше, например, если ты располагаешь какой-то объект по центру чего-то, и поэтому его надо сдвинуть ровно на половину его ширины. Поэтому мы умножаем её на 0.5 (ну или делим на 2, кому как больше нравится). Любое другое значение будет означать, что объект поставится криво. Поэтому пишем само число.

В качестве исключения ещё можно назвать какой-нибудь временный код, по типу for(int i=0; i<10; i++) createEnemy(); где ты, допустим, чисто для теста хочешь создать чего-нибудь 10 штук, потестить и удалить. Т.е. этот код не предполагается, что будет "жить" сколько-нибудь долго, и когда ты доделаешь функцию до конца, ты это удалишь.

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

И только если вариантов никаких других нет вообще, тогда можно написать само число (обычно это -1, 0, 1, 2, 0.5).


Всё, что-то я растёкся мыслию по древу и разумничался, за сим откланиваюсь.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Arton (24.09.2020), Crystal (24.09.2020), pax (24.09.2020), St_AnGer (24.09.2020)