TGViewer
Merion Academy Merion Academy @it_knowledge_base · 9.01K subscribers
Post #1123 2.32K
Что такое «Магические числа?»(спойлер: к Гарри Поттеру они отношения не имеют) 🍷

Знакомая картина?
if status == 3:
send_email()
elif status == 7:
refund_order()


❓ Что такое 3 и 7? Статусы заказа? Коды ошибок? Разработчик, который писал это полгода назад, уже не вспомнит. А новому - придется гадать.

Магическое число - это число, вписанное прямо в код без пояснения, что оно означает. Оно «магическое», потому что его значение понятно только автору (и то не всегда).

Почему это плохо:

- Непонятно: читателю кода приходится искать документацию или лезть в историю коммитов
- Сложно менять: если число используется в 10 местах, а значение поменялось - правь везде, и не ошибись
- Легко сломать: случайно перепутал 3 и 4 - и логика поехала

Но это легко исправить, просто вынеси число в константу или enum:

ORDER_STATUS_PENDING_REFUND = 3

if order_status == ORDER_STATUS_PENDING_REFUND:
process_refund()


from enum import IntEnum

class OrderStatus(IntEnum):
CREATED = 1
PAID = 2
PENDING_REFUND = 3
REFUNDED = 4

if order.status == OrderStatus.PENDING_REFUND:
process_refund()


Так что если число не равно 0, 1 или -1 и не очевидно из контекста - не ленись и дай ему имя! 👀

Кстати, другие полезные советы про то как не надо писать код мы давали в нашем видео про то как не надо писать код ➡️ https://youtu.be/a4fVPvDTYVQ

👍 — если было полезно, и сохранить не забудь, чтобы не магичить потом

#историческаясправкаMerion
  • 🔥 11
  • ❤‍🔥 3
More from @it_knowledge_base
  1. Oct 12, 2026Разгадка: почему SQL-отчёт показал 4000 ₽ вместо 1000 ₽ Правильный ответ: 🔥 два JOIN созд…
  2. Oct 9, 2026Пятничная загадка: SQL-отчёт умножил выручку В таблице orders у заказа №42 сумма 1000 ₽. У…
  3. Oct 8, 2026photo post
  4. Oct 7, 2026Найти пользователей с шестью и более заказами — куда поставить условие? 🐸 SELECT user_id,…
  5. Oct 6, 2026Если запрос из Node.js зависает слишком долго, то ставим дедлайн Если проект использует вс…
  6. Oct 5, 2026Разгадка пятничного кейса 🐸 Одна из вероятных причин – в зависимости useEffect попал объе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →