Здравствуйте, Пётр Седов, Вы писали:
ПС>Здравствуйте, 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>
специализация — удел насекомых... (с) Р. Хайнлайн