Comments 12
Вы, конечно, выполнили задачу. Но код ужасен и нечитаем, к сожалению.
Согласен, коробит прям от отсуствия аннотация типов, от "нейминга" всех эти "i < j", короче такой код не прошел был код ревью) пришлось краснеть)
Да, хорошо, что оно работает. Но большую часть кода занимает преобразование данных, выполненное прямо, без архитектуры (модульности) и распараллеливания. А большую часть статьи занимает код, поэтому статья выглядит удручающе
Глядя на некотрые участки кода, хочется посоветовать ознакомиться с таким понятием как цикломатическая сложность.
Спасибо за комментарий!
Все же цикломатическая сложность больше относится к удобству обслуживания и тестирования, а так как решение было необходимо для одноразового использования вне прома, мы не увидели необходимости в уменьшении сложности.
Можете привести примеры этих участков кода, где бы мы могли сделать рефакторинг, чтоб учли на будущее?
Для примера, можно избавиться от if в этом месте:
...
if not os.path.exists('./areas/'):
os.makedirs('./areas/')
...
У функции makedirs есть опциональный параметр exist_ok, я бы написал так:
os.makedirs(dir_name, exist_ok=True)
И в целом можно "высушить" код, в некоторых местах можно смело убирать else.
Также сделать except избирательным.
Это первое, что бросается в глаза, а так много чего ещё исправить можно.
req = requests.get('https://api.hh.ru/areas').json()
А еще не забывайте оборачивать все это в try/except.
Казалось бы, решение задачи выглядит как один скл запрос к БД. А тут вот целое апи
Работа с API HeadHunter при помощи python