June 2nd, 2005

fatherland

OOP considered harmful

Я несколько утрирую. Тем не менее - есть такая известная вещь -
"visitor pattern". Итератор по объектным деревьям. Его принято писать на
всякой виртуальщине. Понятно, что его можно заменить switch по типам
узелков. Более нетривиальная весчь - на С++ templates это можно сделать так,
что с точки зрения юзеров разницы не будет (сам итератор будет более громоздким,
но использования - текстуально совпадающими).

Пример: двоичное дерево с листями с float и int листьями и суммирование
тех и других значений. Классический OO-вариант. Вариант на шаблонах.

Разница в времени работы - в 4 раза в пользу не ОО (gcc -O3 -fomit-frame-pointer).
Учитывая сугубо формальный и воспроизводимый статус приема - imho железный аргумент
против ОО-варианта.