Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Для чего нужны классы

#java


Возможно, глупый вопрос.

Есть у меня один большой класс - примерно четыре тысячи строк. Если я разделю его
на несколько более мелких классов, даст ли это какое - то улучшение производительности?
Что вообще даёт распределение кода на классы, кроме удобства его редактирования? Спасибо.
    


Ответы

Ответ 1



Основная идея модульного программирования состоит в том, что большая задача делится на меньшие относительно независимые подзадачи (принцип «разделяй и властвуй»). В развитии модульного программирования — объектно-ориентированном программировании — этот принцип выражается в создании множества объектов, каждый из которых решает только свою собственную задачу. Используемый вами антипаттерн проектирования называется Божественный объект, Ваш обьект делает настолько много, что обычным объектам это не под силу. Будем считать что у вас там пречется некоторая галактика, и вообще весь остальной код это декорация над этим объектом :) Подход «божественного объекта» противоположен принципу «разделяй и властвуй»: основная часть функциональности программы кодируется в одном объекте. Так как этот объект хранит большое количество данных и имеет много методов, его роль в программе становится «божественной» (всеобъемлющей). В итоге мы имеем непереносимый и плохо тестируемый код, в котором, к тому же, сложно разобраться. Так же, подобный код довольно сложно поддерживать, учитывая, что вся система зависит практически только от него. Проблема в том, что вся программа настолько становиться зависима от этого класса, что внесение изменений или попытка исправления ошибки становиться через какое-то время настоящим кошмаром. Тот минимальный выигрыш в производительности, которого может не быть совсем, не стоит того, чтобы держать весь код в одном классе и каждый раз переписывать огромную долю своего кода, чтобы подстроиться под новые бизнес-процессы.

Ответ 2



Всё просто. Люди видят вначале вокруг себя объекты, а потом уже действия, каким-либо образом связанные с этими объектами. ООП пытается повторить это восприятие человеком окружающего мира. Именно поэтому писать сложные программы проще используя ООП, то есть, используя классы, чем на функциях. Если Вы в программе используете только один класс, то это равносильно написанию программы на функциях...

Ответ 3



Классы это некоторые абстракции из предметной области или реального мира. Они нужны для управления сложностью кода. Вполне можно обойтись без них (привет, процедурное программирование), но программа на каком то этапе становится слишком запутанной. Не всегда удается разбить класс на несколько мелких классов. Т.к. принцип solid никто не отменял. По производительности трудно что то сказать, скорее нет, чем да. На нее совершенно точно влияет размер методов. Маленькие легко инлайнятся jvm.

Комментариев нет:

Отправить комментарий