zloymih
А то, что я все оформил в виде одного класса это правильно?
Класс нужно делать, когда у тебя есть одни данные, с которыми работают несколько функций.
Например, в питоне есть список - list. Это класс, который состоит из данных и методов для работы с ними. Методы +, append(), extend(), pop(), len и другие. Данные ты не видишь, вся работа с ними происходит через методы.
Когда у тебя есть этот класс, ты можешь создать несколько списков, в каждом из которых свои данные.
Это называется информационно-прочным модулем в классификации Майерса. При этом каждый метод является функционально-прочным модулем, то есть не делает ничего, кроме своей задачи.
Можно ещё наследование рассмотреть, но наследование не такое важное, так как при наследовании точно так же можно получать спагетти.
zloymih
Пишут так или нужно разбивать на отдельные классы?
Если делаешь новый класс, должен задаваться вопросом “что будет делать этот класс, для чего он?”. Вот потренируйся на списке list, как будто его нет и ты должен его сделать.
zloymih
Могут ли возникать проблемы, когда методы одного класса вызываются в разных процессах.
Методы могут быть чистыми, а могут быть с побочными эффектами. Но даже чистые методы могут работать с одними данными, одновременный доступ к которым может приводить к ошибкам. Это тонкая тема, нужно хорошо понимать, что делают процессы и чего не делают.
zloymih
Как правильно (общеприянто) обрабатывать ошибки в подпроцессе и корректно его завершать?
Главный поток должен получать сообщение об ошибке от дочернего и принимать решение о его завершении, посылая сигнал. Короче, должна быть возможность послать и остальным потокам сигнал, что в этом одном произошла ошибка.
zloymih
Легко ли поддерживать такой код, как у меня?
Ты сам откроешь его через год или два и поймёшь. Поймёшь, что написана бурда, которую можно только заново переписать. А времени на это не будет. Вот так же он выглядит для незнакомого человека.
Главная проблема там, если приводить аналогию с машиной, в том, что ты колёса связываешь с рулём, а двигатель - с бампером. Не надо их связывать, это должны быть независимые друг от друга вещи.
Вот наскоряк замени файл на диске на сетевой сокет…