Замена магического числа символьной константой.
В коде используется число, которое несёт какой-то определённый смысл.
Замените это число константой с человеко-читаемым названием, объясняющим смысл этого числа.
##Example
double potentialEnergy(double mass, double height) {
return mass * height * 9.81;
}static final double GRAVITATIONAL_CONSTANT = 9.81;
double potentialEnergy(double mass, double height) {
return mass * height * GRAVITATIONAL_CONSTANT;
}##Why Refactor
Магические числа — это числовые значения, встречающиеся в коде, но при этом неочевидно, что они означают. Данный антипаттерн затрудняет понимание программы и усложняет её рефакторинг.
Дополнительные сложности возникают, когда нужно поменять определённое магическое число. Это нельзя сделать автозаменой, так как одно и то же число может использоваться для разных целей, а значит, вам нужно будет проверять каждый участок кода, где используется это число.
##Benefits
-
Символьная константа может служить живой документацией смысла значения, которое в ней хранится.
-
Значение константы намного проще заменить, чем искать нужное число по всему коду, при этом рискуя заменить такое же число, которое в данном конкретном случае использовалось для других целей.
-
Убирает дублирование использования числа или строки по всему коду. Это особенно актуально, если значение является сложным и длинным (например,
-14159,0xCAFEBABE).
##How to Refactor
-
Объявите константу и присвойте ей значение магического числа.
-
Найдите все упоминания магического числа.
-
Для всех найденных чисел проверьте, согласуется ли это магическое число с предназначением константы. Если да, замените его вашей константой. Эта проверка важна, так как одно и тоже число может означать совершенно разные вещи (в этом случае, они должны быть заменены разными константами).