Назад к задачам
Junior — Senior
6

Определение нарушений принципов SOLID в представленном фрагменте кода

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Определите, какие из принципов SOLID не соблюдены в следующем примере кода:


class Invoice:
    def __init__(self, order_id, amount):
        self.order_id = order_id
        self.amount = amount
        self.filename = f'invoice_{order_id}.pdf'  # Имя файла инвойса
        self.data = self.generate_invoice_data()  # Генерация содержимого инвойса в формате PDF
        self.pdf_data = generate_invoice_pdf(self.data)  # Генерация содержимого инвойса в формате PDF

    def calculate_average_price_for_all_years(self):
        all_orders = db.session.query(Order).all()
        average = 0
        n = 0
        for order in all_orders:
            order_price = order.order_details['price']
            n += 1
            average = (average + order_price) / n
        return average

    def generate_account_report(self, order):
        average_price_for_all_orders = self.calculate_average_price_for_all_years()
        return f"Текущая цена заказа: {order.order_details['price']}. " \
               f"Средняя цена всех заказов за все время: {average_price_for_all_orders}"

    def generate_invoice_data(self):
        return "<h3>Инвойс для заказа №</h3><p>Сумма к оплате: {}".format(self.order_id, self.amount)