| | ООП имеет много преимуществ, но имеет и недостатки.
++:
- Модульность. Грамотно разработанный класс более переносим, чем функция.
- Переключение на объектное видение мира. Когда мы видим мир, мы думаем чаще об объектах, а не о действиях. Кроме того, даже если мы думаем о действиях, мы привязываемся к объектам. Например, открыть окно и открыть дверь - два разных действия, которые чем-то похожи и называются одинаково. Разница в объектах. В существительных. В то время как при процедурном программировании первичны глаголы.
- Простота разработки объемных приложений. Так как нужно фокусироваться на грамотной реализации архитектуры одного класса, а не целого приложения. Идеальный класс должен работать, будучи внедренным в любую(!) другую программу. Это позволяет разделить большое приложение на много маленьких и несложных.
- Так как приложение легко делится на классы, которые независимы и легко интегрируемы, облегчается коммандная разработка. Это очень важный фактор. Попробуйте спроектировать программу с процедурным подходом так, чтобы разбить ее на подзадачи. Это, порой, не так легко. А если глобальные переменные имеются....
- Снижается количество кода за счет наследования. Один раз реализуешь максимально универсальный метод, а потом реализуешь его для множества разных объектов.
--:
- снижается производительность. Что бы ни говорили, а объектные программы работают медленнее процедурных. В вебе, при проектировании малых и средних систем одним разработчиком, я бы применял (и применяю) процедурный подход. Правда, все меняется, когда приходят они: другие программисты. Либо система становится слишком громоздкой.
- нужно перестроить сознание на ООП. Это не так уж сложно, но все-таки, при переходе от процедурного мышления к ООП, многие продолжают программировать процедурно, но в объектах:) Короче, привыкнуть надо. | |