Если вы вспомните, почему ОО был изобретен, вы увидите, что ООП вообще не нужен , но иногда это делает вашу жизнь намного проще.
Еще во времена C-программирования очень большая программа могла стать довольно грязной и с ней трудно работать. Таким образом, они изобрели способы разбиения его на модульные куски. ООП использует этот подход и делает его еще более модульным, помещая данные в эти фрагменты программной логики, чтобы они были еще более отделены от остальной части кода.
Это позволяет вам писать все большие и большие программы, при этом вы можете вместо этого превратить своего огромного слона в задачу размером в сотню мышей. Дополнительным бонусом является то, что вы можете взять некоторые из этих «мышей» и использовать их в других программах!
Конечно, реальный мир не совсем такой, и повторное использование объекта так и не получило должного понимания, как это было задумано, но это не значит, что это бесполезная парадигма.
Что бесполезно, так это чрезмерная зависимость от любого стиля кодирования. Любой, кто делает ОО с тысячей крошечных, незначительных классов, на самом деле не делает это правильно - они делают кошмар обслуживания для себя (или кого-то еще). Любой, кто пишет процедурное приложение, которое имеет всего 3 функции, также усложняет жизнь. Наилучший способ - это средние базовые объекты большого размера (иногда называемые компонентами, которые, как мы надеялись, когда-то собирались), которые могут предоставить достаточное количество автономного кода и данных, которые с гораздо большей вероятностью могут быть повторно использованы в изоляции от остальной части вашего приложения.
Мой совет на следующий раз: попробуйте написать свой обычный процедурный код, но создайте единый объект из вашей основной структуры данных. Посмотрите, как вы обнаружите, что работать с ним проще, чем передавать данные от функции к функции.