0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Магические числа - пример плохих практик в программировании. Из этой статьи вы узнаете, почему от них надо избавляться и как это делать.</p>
1
<p>Магические числа - пример плохих практик в программировании. Из этой статьи вы узнаете, почему от них надо избавляться и как это делать.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Что такое магические числа</a></li>
3
<ul><li><a>Что такое магические числа</a></li>
4
<li><a>Как избавиться от магических чисел</a></li>
4
<li><a>Как избавиться от магических чисел</a></li>
5
</ul><h2>Что такое магические числа</h2>
5
</ul><h2>Что такое магические числа</h2>
6
<p>В программировании магическими называют числа в коде, смысл которых сложно понять. Взгляните на пример.</p>
6
<p>В программировании магическими называют числа в коде, смысл которых сложно понять. Взгляните на пример.</p>
7
<p>Это пример магического числа, потому что невозможно однозначно ответить на вопрос, почему для вычисления bruttoPrice нужно умножить nettoPrice на 1.20. Смысл числа 1.20 приходится восстанавливать по контексту. Но при работе с большими приложениями в реальной разработке это не всегда возможно.</p>
7
<p>Это пример магического числа, потому что невозможно однозначно ответить на вопрос, почему для вычисления bruttoPrice нужно умножить nettoPrice на 1.20. Смысл числа 1.20 приходится восстанавливать по контексту. Но при работе с большими приложениями в реальной разработке это не всегда возможно.</p>
8
<p>Магические числа<a>не ломают код</a>. В примере выше пользователь увидит окончательную цену, то есть программа отработает. В чём же проблема?</p>
8
<p>Магические числа<a>не ломают код</a>. В примере выше пользователь увидит окончательную цену, то есть программа отработает. В чём же проблема?</p>
9
<p>Код с магическими числами сложно понять без контекста. Это может стать проблемой для разработчиков, которые впервые видят приложение. Да и автор кода может забыть, почему использовал именно это число.</p>
9
<p>Код с магическими числами сложно понять без контекста. Это может стать проблемой для разработчиков, которые впервые видят приложение. Да и автор кода может забыть, почему использовал именно это число.</p>
10
<h2>Как избавиться от магических чисел</h2>
10
<h2>Как избавиться от магических чисел</h2>
11
<p>Это можно сделать с помощью константы с понятным названием. То есть название константы должно передавать смысл числа.</p>
11
<p>Это можно сделать с помощью константы с понятным названием. То есть название константы должно передавать смысл числа.</p>
12
<p>Очевидное указание ставки НДС делает код более понятным.</p>
12
<p>Очевидное указание ставки НДС делает код более понятным.</p>
13
<p>Код с магическими числами сложно поддерживать и расширять. Например, если магазин продаёт товары людям из разных стран, магические числа приводят к дублированию:</p>
13
<p>Код с магическими числами сложно поддерживать и расширять. Например, если магазин продаёт товары людям из разных стран, магические числа приводят к дублированию:</p>
14
<p>Проблему решает избавление от магических чисел:</p>
14
<p>Проблему решает избавление от магических чисел:</p>
15
<p>Резюме:</p>
15
<p>Резюме:</p>
16
<ul><li>Магические числа - плохая практика в программировании</li>
16
<ul><li>Магические числа - плохая практика в программировании</li>
17
<li>Обычно магические числа не ломают код, а делают его менее понятным</li>
17
<li>Обычно магические числа не ломают код, а делают его менее понятным</li>
18
<li>Чтобы избавиться от магических чисел, достаточно использовать константы или переменные с понятными названиями</li>
18
<li>Чтобы избавиться от магических чисел, достаточно использовать константы или переменные с понятными названиями</li>
19
</ul><blockquote><h3>Дополнительные материалы</h3>
19
</ul><blockquote><h3>Дополнительные материалы</h3>
20
<ul><li><a>Совершенный код: именование в программировании</a></li>
20
<ul><li><a>Совершенный код: именование в программировании</a></li>
21
</ul></blockquote><p>Дмитрий Дементий</p>
21
</ul></blockquote><p>Дмитрий Дементий</p>
22
<p>5 лет назад</p>
22
<p>5 лет назад</p>