HTML Diff
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>