Tanymv / Coursework_4

0 stars 0 forks source link

По поводу класса хранения #3

Open bendenko-v opened 12 months ago

bendenko-v commented 12 months ago

https://github.com/Tanymv/Coursework_4/blob/94708452c46600eb46a1ab28e4fca40f982940b6/src/main.py#L92-L94

https://github.com/Tanymv/Coursework_4/blob/94708452c46600eb46a1ab28e4fca40f982940b6/src/main.py#L144-L146

Вообще лучше чтобы каждый класс отвечал за что-то одно (Single responsibility principle из SOLID).

Само сохранение файлов лучше всегда делать с помощью контекстного менеджера (через ключевое слово with), так точно не ошибёшься и файл всегда будет закрыт после манипуляций с ним.

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

Например, что-то такое:

class FileSaver:
    @staticmethod
    def save_to_file(data, filename, mode):
        with open(filename, mode=mode, encoding='utf8') as f:
            f.write(json.dumps(data, ensure_ascii=False, indent=2))

А в классах работы с HH и SuperJob уже использовать функционал FileSaver для сохранения.

def add_file(self):
        file_saver = FileSaver()

        for page in range(0, 20):
            js_obj1 = json.loads(hh)
            next_file_name1 = 'hh.json'
            file_saver.save_to_file(js_obj1, next_file_name1, mode='a')
            ...
            # и так далее

Вот тут file_saver.save_to_file(js_obj1, next_file_name1, mode='a') ещё зависит от реализации. не знаю предполагается сохранение каждый раз в новые файлы или все новые вакансии планируется с помощью append (mode='a') дописывать в один и тот же файл. Тут зависит от планируемой логики решения.