Как аспектно-ориентированное программирование (AOP) влияет на качество кода? - PullRequest
2 голосов
/ 27 сентября 2011

Аспектно-ориентированное программирование (AOP) кажется интересной концепцией.Сначала я был в восторге от этого, но когда я прочитал больше и увидел варианты использования, которые описывали люди, я разочаровался.

Многие сайты, которые я видел, плюс презентация от разработчиков AspectC ++, представили использованиеслучаи, которые я нахожу довольно сомнительными.

Они говорили о том, как можно использовать AOP для обработки ошибок (создания исключений), проверки границ параметров и возвращаемых значений, возврата безопасных нулевых объектов в случае, если что-то пойдет не так, безопасностьи т. д. Это просто плохие примеры (а не реальные случаи использования) или я что-то упустил?

Как вы должны знать, что происходит, когда вы вызываете функцию?Практически все может случиться, в зависимости от того, какие аспекты вы решили применить.Разве это не испортит вещи действительно очень плохо?Как насчет документации API, как я должен это написать?

Пока что единственные хорошие варианты использования AOP, которые я видел, это такие вещи, как регистрация или профилирование - вещи, которые не влияют на реальный логический поток ислужат только в качестве инструментов отладки.

Является ли АОП полезным для чего-то еще, кроме механизмов отладки?

1 Ответ

3 голосов
/ 27 сентября 2011

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

Я бы не стал его использовать везде, где вам нужно задаться вопросом, что происходит, когда вы вызываете функцию. Это похоже на запах кода.

...