В 90-х гг. "объектно-ориентированное
программирование" (ООП) было модным термином. Мне было интересно, что данный термин
означал, но поиски приемлемого определения не были легкими. Я все еще помню
описание, на которое наткнулся в каком-то источнике:
Объектно-ориентированное программирование - это способ организации крупных программ... Если программа недостаточно большая, вы не заметите разницы между объектно-ориентированным и структурированным программированием.
Теперь со вторым предложением можно поспорить. ООП - не
просто высокоуровневый стиль организации. Объекты и вызовы методов
пронизывают ПО на самом низком уровне. Отсюда и начались проблемы. Разработчики
посчитали, если объекты - это хорошо, то больше объектов - еще лучше. Все
должно быть объектом!
Например, я разговаривал с коллегой о том, как отобразить
глубину в нефтяной скважине для программы, которую мы писали. Я сказал:
"Давайте будем использовать число".
Мое предложение высмеяли и назвали необдуманным. Нам нужно
создать объекты глубины! И не просто объекты C++, а COM-объекты!
Языки вроде C# и Java реализуют парадигму "все
представляет собой объект". Нельзя просто написать функцию, необходимо
написать методы класса. В результате, возникает огромное количество классов,
которые разве что обертывают функцию. Предположим, вам нужна функция, чтобы
решить квадратное уравнение. Вы можете превратить его в метод Solve в объекте
класса QuadraticEquationSolver. Глупо. Как сказал Джон Кармак:
Иногда изящная реализация является функцией. Не методом. Не классом. Не фреймворком. Просто функцией.
Языки меняются. Вы можете создать анонимные функции, к
примеру, в C#. Или даже именованные, создав сперва анонимную, а затем сохранив
ее в именованную переменную. Не очень надежно, но попробовать стоит.
Я полагаю, когда люди называют ООП кошмаром, они имеют в
виду, что ООП в современном виде зашло слишком далеко.
Полезные ссылки:
Полезные ссылки:
Комментариев нет:
Отправить комментарий