Больше всего меня беспокоит наполнение классов тоннами вещей или разбиение объектов и растворение моих проектов в море классов
Это очень верный аргумент и в любом случаемасштабный проект, крайне сложно получить право сразу, особенно потому, что в действительности в большинстве случаев требования сами по себе меняются со временем.Вот тут-то и приходит «Рефакторинг». Вы разрабатываете на основе того, что знаете в любой данный момент, и стараетесь не слишком совершать слишком много прыжков веры в то, что, по вашему мнению, система МОЖЕТ развить.
Учитывая, что вызнайте, что вы создаете прямо сейчас, вы разрабатываете свои классы, стараясь максимально эффективно использовать концепции ОО - например, инкапсуляцию / полиморфизм.Это само по себе, как отмечали и другие, может быть очень сложно достичь, и в этом случае опыт, как в области разработки ОО-систем, так и в области знаний, может действительно пригодиться.
Дизайн, основанный на том, чтоВы знаете -> Build It -> Просмотрите это -> Refactor it -> Re-design -> и это продолжается и продолжается ..