вторник, 20 августа 2013 г.

Слишком много объектов

В 90-х гг. "объектно-ориентированное программирование" (ООП) было модным термином. Мне было интересно, что данный термин означал, но поиски приемлемого определения не были легкими. Я все еще помню описание, на которое наткнулся в каком-то источнике:
Объектно-ориентированное программирование - это способ организации крупных программ... Если программа недостаточно большая, вы не заметите разницы между объектно-ориентированным и структурированным программированием.
Теперь со вторым предложением можно поспорить. ООП - не просто высокоуровневый стиль организации. Объекты и вызовы методов пронизывают ПО на самом низком уровне. Отсюда и начались проблемы. Разработчики посчитали, если объекты - это хорошо, то больше объектов - еще лучше. Все должно быть объектом!


Например, я разговаривал с коллегой о том, как отобразить глубину в нефтяной скважине для программы, которую мы писали. Я сказал: "Давайте будем использовать число".

Мое предложение высмеяли и назвали необдуманным. Нам нужно создать объекты глубины! И не просто объекты C++, а COM-объекты!

Языки вроде C# и Java реализуют парадигму "все представляет собой объект". Нельзя просто написать функцию, необходимо написать методы класса. В результате, возникает огромное количество классов, которые разве что обертывают функцию. Предположим, вам нужна функция, чтобы решить квадратное уравнение. Вы можете превратить его в метод Solve в объекте класса QuadraticEquationSolver. Глупо. Как сказал Джон Кармак:
Иногда изящная реализация является функцией. Не методом. Не классом. Не фреймворком. Просто функцией.
Языки меняются. Вы можете создать анонимные функции, к примеру, в C#. Или даже именованные, создав сперва анонимную, а затем сохранив ее в именованную переменную. Не очень надежно, но попробовать стоит.

Я полагаю, когда люди называют ООП кошмаром, они имеют в виду, что ООП в современном виде зашло слишком далеко.

Полезные ссылки:

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

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