0. Коротко ООП PHP - Плюсы и минусы
Начинаю серию постов под названием "Коротко ООП PHP". В цикле затрону основные моменты обьектно ориентированного программирования на PHP. А сегодня начнем с плюсов и минусов. Подразумевается, что вы вкурсе что такое PHP на уровне новичка.
Плюсы: помогает создавать более управляемые проекты за счет создания обьектов, сводит дублирование кода к минимуму, код более расширяем и структурирован. Тестируемый. И закрыт от внешнего мира.
Минусы: производительность, она ниже. Необходимо понимать базовые концепции. Проектирование классов не всегда просто, и скорей всего придеться переписывать, пока не научишся на ошибках. Документировать классы сложней, т.к. методы могут переопределяться. Иногда сложно понять какие поля и методы относятся к данному классу из за сложности ирархии классов и приходится просматривать весь код. В библиотечном классе часто содержится больше методов, чем это реально необходимо.
Цитата из книги, которая ставит все на место:
Плюсы: помогает создавать более управляемые проекты за счет создания обьектов, сводит дублирование кода к минимуму, код более расширяем и структурирован. Тестируемый. И закрыт от внешнего мира.
Минусы: производительность, она ниже. Необходимо понимать базовые концепции. Проектирование классов не всегда просто, и скорей всего придеться переписывать, пока не научишся на ошибках. Документировать классы сложней, т.к. методы могут переопределяться. Иногда сложно понять какие поля и методы относятся к данному классу из за сложности ирархии классов и приходится просматривать весь код. В библиотечном классе часто содержится больше методов, чем это реально необходимо.
Цитата из книги, которая ставит все на место:
Процедурный код (код, использующий структуры данных) позволяет легко добавлять новые функции без изменения существующих структур данных. Объектно - ориентированный код, напротив, упрощает добавление новых классов без изменения существующих функций.
Обратные утверждения также истинны.
Процедурный код усложняет добавление новых структур данных, потому что оно требует изменения всех функций. Объектно-ориентированный код усложняет добавление новых функций, потому что для этого должны измениться все классы.
Таким образом, то, что сложно в ОО, просто в процедурном программировании, а то, что сложно в процедурном программировании, просто в ОО!
Обратные утверждения также истинны.
Процедурный код усложняет добавление новых структур данных, потому что оно требует изменения всех функций. Объектно-ориентированный код усложняет добавление новых функций, потому что для этого должны измениться все классы.
Таким образом, то, что сложно в ОО, просто в процедурном программировании, а то, что сложно в процедурном программировании, просто в ОО!