Wednesday, September 27, 2006

Aspect-oriented Programming

Вернулся из отпуска, почитал LtU про Aspect-oriented Programming и дотянул наконец руки до AOP. (стыдно, что только сейчас, да :) Впечатления странные -- с одной стороны да, интересно, смысл в таких вещах очевидно есть. Действительно, в жизни встречается дофига этих самых crosscutting roles, т.е. общие.. эээ.. поведения различных объектов. Там классический пример -- куча объектов должны писать лог своих действий -- так вот неплохо когда вся логика писания в лог выносится куда-то отдельно, а объекты сами ничего про него не знают. С другой стороны, основной поинт критиков AOP сразу очевиден -- логика растаскивается по кускам, и отслеживать-поддерживать все это хозяйство сложно. Локальность логики теряется. Да и статья, про которую и был пост на LtU, во многом очень убедительно звучит -- такие системы не особо помогают в декомпозиции самой задачи, т.е. это не к дизайну программ (в высокоуровневом смысле), это решение каких-то сиюминутных программерских проблем.. Будем курить дальше, в AOP должны же быть какие-нить убийственные плюсы, раз все с ним так носятся ;)

3 comments:

Anonymous said...

Как правильно сказал Tim Sweeney большинство хаков, которые предлагает АОП, можно достаточно четко описать type class-ами.

А в целом, все как в поговорке. Хорошая слава лежит, плохая бежит. АОП - просто очередной базворд (как и ФП, кстати). Не трать на него времени.

Anonymous said...

А вот на ФП потратить время стоит.

lrrr said...

Ну АОП, как еще один подход к дизайну софта -- это интересно. Правда, применять (по крайней мере в таком виде как в AspectJ) не хочется совсем :)

А ФП наверное в наименьшей степени базворд, чем большинство баззвордов, знакомых мне )