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

SOLID‑рефакторинг: переработка класса FileStats

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

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

class FileStats:
    def __init__(self, *extensions):
        self.file_count = 0
        self.extensions = extensions
        self.line_total = 0
        self.column_total = 0

    def increase(self, **kwargs):
        self.file_count += 1
        if 'txt' in self.extensions or 'csv' in self.extensions:
            self.line_total += kwargs.get('lines', 0)
        if 'csv' in self.extensions:
            self.column_total += kwargs.get('columns', 0)

    def __str__(self):
        result = f'Files count = {self.file_count}'
        if 'txt' in self.extensions or 'csv' in self.extensions:
            result += f'\ntotal lines = {self.line_total}'
        if 'csv' in self.extensions:
            result += f'\ntotal columns = {self.column_total};'
        return result