TGViewer
Python Portal Python Portal @pythonportal · 50.3K subscribers
Post #6130 3.46K
Не нарушайте принцип единственной ответственности

Функция должна делать одну вещь, делать её хорошо и только её.

Эта функция делает слишком много:

def calculate_final_total(
price: float,
quantity: int,
discount_rate: float,
tax_rate: float
) -> float:
# Расчёт промежуточной суммы
subtotal = price * quantity

# Применение скидки
discounted_amount = subtotal * (1 - discount_rate)

# Расчёт налога
final_total = discounted_amount * (1 + tax_rate)

return final_total


Проблема здесь в том, что расчёт промежуточной суммы, скидки и налога объединён в одну функцию. Любое изменение одного из этапов может повлиять на весь расчёт.

Лучше разбить логику на небольшие специализированные функции:

def calculate_subtotal(price: float, quantity: int) -> float:
return price * quantity

def apply_discount(subtotal: float, discount: float) -> float:
return subtotal * (1 - discount)

def calculate_tax(amount: float, tax_rate: float) -> float:
return amount * (1 + tax_rate)


Так намного лучше.

Небольшие функции с одной задачей проще покрывать модульными тестами, потому что у них меньше зависимостей и требуется меньше моков.

Кроме того, изолированные компоненты проще переиспользовать в разных частях приложения или конвейера, не подтягивая лишние зависимости.

Поэтому держите функции простыми и сфокусированными.

Одна функция — одна ответственность.

👉 @PythonPortal
  • 👍 7
  • ❤ 3
  • 🤔 2
  • 🤝 2
More from @pythonportal
  1. Oct 3, 2026«Как обучить нейросеть» — краткий конспект лекций курса MIT по глубокому обучению за 2024…
  2. Oct 3, 2026Tencent выпустила новую модель для перевода, которая, по их словам, обходит Google Transla…
  3. Oct 2, 2026Один из лучших ресурсов по производительности SQL: use-the-index-luke.com 👉 @PythonPortal
  4. Oct 2, 2026Многие постоянно путаются в этом: В чём на самом деле разница между 100 МБ/с и 100 Мбит/с?…
  5. Oct 1, 2026Исследователи MIT математически доказали, что ChatGPT устроен так, что может затягивать по…
  6. Oct 1, 2026Интервьюер: Ты вводишь имя пользователя в Gmail, и через несколько секунд система пишет: «…
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 →