Re[5]: В чём развод STL?
От: hVostt Россия http://hvostt.ru
Дата: 02.07.07 08:04
Оценка:
Здравствуйте, Пётр Седов, Вы писали:

ПС>Здравствуйте, alzt, Вы писали:



MN>>>>Это ещё достаточно простая комбинация. Для меня эта запись выглядит понятной, но я встречал людей, которых она вгоняла в такой ступор... А уж если надо написать свой функтор (но это уже больше относится к 3-ему пункту).


A>>В ступор этот код вогнать конечно может. Но только человека плохо знающего stl.

ПС>По-моему, использование тривиальных STL-алгоритмов (вроде for_each или transform) ухудшает код.

Почему вы так считаете? Кажется так более яснее выражаются намерения автора, например, если for{;;} используется для тривиального перебора, то for_each будет уместно использовать.

ПС>Во-первых, такой код превращается в тайнопись для избранных и рискует стать write-only (это сейчас понятно, а через пару лет будет непонятно, и тогда проще переписать, чем понять).


Везде необходима умеренность. Стауструп ещё писал, что мы типа не можем запретить программисту писать плохой код или как-то ограничить его, но можем предоставить больше средств для выразительности и эффективности.

Зачем же выискивать плохие примеры кода, если и так понятно — использовать STL можно и через одно место.

ПС>Во-вторых, нельзя писать функтор по месту использования – теряется локальность кода (вспоминаю Pascal: переменная объявлена в одном месте, а используется совсем в другом; приходится постоянно метаться между двумя этими местами). Неудобно использовать в функторе локальные переменные, лежащие рядом с вызовом STL-алгоритма (приходится пихать ссылки в функтор). Архитектура программы захламляется мелочными искусственными функтор-классами (мои понятия: если название класса – не существительное, то класс искусственный).


Если функтор не имеет состояния, то наверное надо подумать над тем, надо ли вообще его писать. Тоже самое.. надо шире смотреть на решение задачи, не обязательно упираться в эти функторы без необходимости.

ПС>В-третьих, снижается эффективность программы (вместо статического вызова loc.toupper_wrap(…) делается динамический вызов; это плохо для cache-а, особенно в цикле).


Там где это кретична вообще на асме можно писать. Об этом же уже много сказано... или ещё не достаточно много?

ПС>В-четвёртых, код с функторами сложнее отлаживать.


Да ну. Я то всегда думал, функторы легче отлаживать, так как можно подставлять дебаг-вариант функтора с дополнительными регистациями.
Ну это ведь тоже на любителя Такое ощущение, что STL диктует или заставляет использоваться..
... << RSDN@Home 1.2.0 alpha rev. 693>>
silent
<no any citation>
специализация — удел насекомых... (с) Р. Хайнлайн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.