Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
18 lines (11 sloc) 2.59 KB

Aspect-Oriented Programming (AOP)

Как известно, писать на Java понятный и сопровождаемый код довольно сложно, но приходится. Всё-таки самый популярный язык программирования. Там и шаблоны проектирования, и куча интересных архитектурных решений. Одно из них - Аспектно-ориентированное программирование. Почитать можно в разных источниках:

Если говорить о подходе в общем, он позволяет довольно красиво, без лишней писанины (соответственно, с низкой вероятностью где-то что-то забыть указать в одном классе из ста) интегрировать определенные аспекты в определенные срезы. Например, подключить логирование ко всем сетевым запросам или замокать печать документов.

Для Python также есть несколько неплохих реализаций подхода:

  • metapython/aspect -- отличная реализация AOP через метаклассы.
  • aspectlib -- реализация через корутины и декораторы.
  • b3j0f.aop -- гибкая и мощная реализация AOP. не столько черной магии, как в первой, но так даже лучше. К тому же, в её README есть ссылки на альтернативные реализации.

Главное, используйте вот это вот всё осторожно и разумно: не все, кто будет читать Ваш код, знают про всю эту чёрную магию.

You can’t perform that action at this time.