Middle+
Medewerkers werken deels op uurbracht en deels op stukloon. De betaalformules voor vrije dagen verschillen voor hen. Kunnen ze worden samengevoegd in één berekeningsmethode of zijn er twee nodig?
sobes.tech AI
Antwoord van AI
Если формулы оплаты выходного дня для повременной и сдельной оплаты существенно различаются, лучше реализовать два отдельных вида расчёта. Это позволит сохранить ясность и гибкость системы, упростит поддержку и тестирование.
Однако можно рассмотреть вариант объединения, если выделить общие элементы расчёта и параметризовать различия. Например, создать базовый алгоритм с условными ветвлениями или стратегиями, которые применяются в зависимости от типа оплаты.
Пример подхода с использованием паттерна «Стратегия» на псевдокоде:
class PaymentStrategy:
def calculate(self, hours, rate):
pass
class TimeBasedStrategy(PaymentStrategy):
def calculate(self, hours, rate):
return hours * rate * 2 # пример формулы для выходного дня
class PieceworkStrategy(PaymentStrategy):
def calculate(self, pieces, rate):
return pieces * rate * 1.5 # другая формула
# Использование
strategy = TimeBasedStrategy() if employee.payment_type == 'time' else PieceworkStrategy()
payment = strategy.calculate(employee.work_amount, employee.rate)
Таким образом, можно объединить в одну систему расчёта с разными стратегиями, но не смешивать формулы в одном виде расчёта.