У недавньому проекті мені потрібно було перетворити з байтів на кілобайт кібібайт . Код був досить простим:
var kBval = byteVal / 1024;
Після написання цього запитання я отримав решту функції, яка працювала і продовжувала роботу.
Але згодом я почав замислюватися, чи щойно я вклав у свій код чарівне число . Частина мене каже, що це було добре, оскільки число є постійною константою і його слід легко зрозуміти. Але інша частина мене вважає, що це було б дуже зрозуміло, якби загорнутись у визначену константу на кшталт BYTES_PER_KBYTE
.
Тож чи справді загальновідомі константи є чимось магічним чи ні?
Пов’язані запитання:
Коли число є магічним числом? і чи кожне число в коді вважається "магічним числом"? - подібні, але набагато ширші запитання, ніж те, що я задаю. Моє запитання орієнтоване на відомі постійні числа, які не розглядаються в цих питаннях.
Усунення магічних чисел: коли настав час сказати "ні"? також пов'язаний, але орієнтований на рефакторинг на відміну від того, чи є постійне число магічним числом чи ні.
1024
, тому що в іншому випадку ваша команда розробників витратить весь свій час, сперечаючись про те, що це "кілобайт" або "кібібайт".
#define
KIBI
1024 - MEBI
як 1024 * 1024…
ZERO=0, ONE=1, TWO=2
і коли програми переносяться на інші мови (або програмісти не змінюють поведінку при переключенні своєї мови), ви також побачите це, і вам доведеться молитися, щоб ніколи хтось не змінив його на ONE=2
…
FOUR_HUNDRED_FOUR = 404
. Я працював над іншим проектом, де вони войовничо використовували постійні рядки замість літералів, тому у них було десятки рядків у коді, який виглядав так,DATABASE = "database"