Aspect-Oriented Programming

✒ Enzo SandrĂ© · 📆 22/11/2022 · #ïžâƒŁ Façonnage de code

🔏 Les logs, le monitoring ou la sĂ©curitĂ© ne sont pas de la responsabilitĂ© d’une seule partie du code. Ce sont des responsabilitĂ©s de l’ensemble du code. Or, SRP et DRY, principes fondamentaux du design, nous interdisent de surcharger chaque classe pour prendre en compte tous ces soucis. Ils sont appelĂ©s crosscutting concerns ou soucis transversaux en français.

📩 A l’aube des annĂ©es 2000, la complexitĂ© croissante des logiciels a descillĂ© les yeux des dĂ©veloppeurs sur ces problĂšmes. Plusieurs tentatives ont Ă©tĂ© faites. L’une d’entre-elles, Aspect-Oriented Programming, postule qu’il manque une couche d’abstraction entre les classes et les modules : les composants.

đŸȘĄ Ces composants, exprimĂ©s Ă  l’aide d’une syntaxe propre, tissent (weaving) les classes et les agencent afin de rĂ©pondre aux soucis transversaux sans violer SRP.

đŸŒ«ïž AOP se voyait comme l’itĂ©ration suivante de l’orientĂ©-objet. Avec 20 ans de recul AOP a Ă©tĂ© trĂšs peu adoptĂ©, principalement Ă  cause de l’obscurcissement du code qu’il provoque. Les dĂ©veloppeurs sont difficilement capables de prĂ©dire le fonctionnement d’un programme Ă  cause du tissage qui fait un usage massif de rĂ©flexion. Les IDE sont souvent aussi perdus, et incapables d’assister le refactoring d’un tel code.

💉 Cependant, on doit Ă  AOP un vocabulaire (aspect, crosscutting-concern, etc.) et il a ouvert la voie Ă  l’injection de dĂ©pendances moderne, qui offre un moyen plus lisible de gĂ©rer les mĂȘmes problĂšmatiques.

SOURCE

Lopes, Cristina & Kiczales, Gregor & Lamping, John & Mendhekar, Anurag & Maeda, Chris & Loingtier, Jean-marc & Irwin, John. (1999). Aspect-Oriented Programming. ACM Computing Surveys. 28. DOI:10.1145/242224.242420

Enzo Sandré


DOIs: 10.1145/242224.242420