Аспектно-ориентированное программирование (AOP) кажется интересной концепцией.Сначала я был в восторге от этого, но когда я прочитал больше и увидел варианты использования, которые описывали люди, я разочаровался.
Многие сайты, которые я видел, плюс презентация от разработчиков AspectC ++, представили использованиеслучаи, которые я нахожу довольно сомнительными.
Они говорили о том, как можно использовать AOP для обработки ошибок (создания исключений), проверки границ параметров и возвращаемых значений, возврата безопасных нулевых объектов в случае, если что-то пойдет не так, безопасностьи т. д. Это просто плохие примеры (а не реальные случаи использования) или я что-то упустил?
Как вы должны знать, что происходит, когда вы вызываете функцию?Практически все может случиться, в зависимости от того, какие аспекты вы решили применить.Разве это не испортит вещи действительно очень плохо?Как насчет документации API, как я должен это написать?
Пока что единственные хорошие варианты использования AOP, которые я видел, это такие вещи, как регистрация или профилирование - вещи, которые не влияют на реальный логический поток ислужат только в качестве инструментов отладки.
Является ли АОП полезным для чего-то еще, кроме механизмов отладки?