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

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

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

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
  • ❤ 26
  • 👍 6
  • 🤯 3
  • 🤔 1
  • 👀 1
More from @pythonportal
  1. Oct 5, 2026DeepSeek выложила в открытый доступ библиотеку, которая ускоряет вычисления на GPU, лежащи…
  2. Oct 4, 2026Modern Robotics: Mechanics, Planning, and Control. Сохраните на потом. Это полноценный уче…
  3. Oct 4, 2026«Изучение математики. Почему память, практика и техника важнее таланта» Чтобы освоить мате…
  4. Oct 3, 2026«Как обучить нейросеть» — краткий конспект лекций курса MIT по глубокому обучению за 2024…
  5. Oct 3, 2026Tencent выпустила новую модель для перевода, которая, по их словам, обходит Google Transla…
  6. Oct 2, 2026Один из лучших ресурсов по производительности SQL: use-the-index-luke.com 👉 @PythonPortal
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 →