J’ai commencé par répondre à ce commentaire, mais la "gravité" du sujet évoqué par Bruno m’a amené à considérer de répondre sous la forme d’un billet à part entière. Ceci afin d’attirer l’attention du plus grand nombre sur les mesures à prendre pour empêcher la progression de la programmation orientée Aspect.

Bruno, voici donc ma réponse :

POA, c'est moche ce qui vous arrive. Je comprends très bien que le viol de votre code au plus profond de son intimité puisse vous faire craindre la mise en péril de son intégrité. Mais sachez que vous en êtes avant tout le principal responsable! De par votre attitude, à sans cesse le structurer et a en isoler chacune des fonctions en procédant à une encapsulation systématique vous avez rendu votre code aguichant sous tous ses aspects :-) . Si vous vouliez porter l’affaire en justice, je pense qu’au regard de votre attitude provocante les violeurs/voleurs dont vous parlez seraient relaxés.

Egalement amateur de beau code, je comprends votre douleur et vos craintes. Malheureusement pour vous aider dans votre combat je ne peux que vous donner quelques conseils qui vous demanderons certainement beaucoup de courage et d’efforts pour les mettre en application.

Afin que ce gang de violeurs qui se réclament du mouvement de la programmation Aspect ne puisse plus s’en prendre à votre code, il faut que vous cessiez de les provoquer ainsi en affichant de tels attraits. Pour les repousser, vous devez produire du code qui pour eux sera répulsif. La recette de l’écriture d’un tel code est relativement simple :

  • Afin d’éviter l’intrusion ultérieure de Gotos invisibles mettez en partout dès le départ ainsi ces intrus trouverons difficilement un endroit où s’installer.
  • Ne scindez pas votre code en fonction des services qu’il rend mais plutôt en fonction de critères purement techniques dans l’unique but d’en faciliter la rédaction. Ce découpage ingénieux satisfera votre égo de développeur, n’apportera strictement rien en terme de service rendu mais rendra surtout ces services difficilement utilisables par vos violeurs.
  • Pour couvrir un besoin n’essayez pas de comprendre le « quoi » mais pensez uniquement au « comment ». Cherchez une solution technique. Dès que vous en tenez une, lancez vous. Ne vous inquiétez pas. Si par la suite vous découvriez des besoins que vous n’aviez pas perçus au départ, vous trouverez toujours bien un endroit où les intégrer dans ces grandes procédures monolithiques auxquelles vous aurez naturellement abouti.
  • Pour chaque nouveau besoin semblable au premier, mettez en pratique la réutilisation. Pour ce, commencez par une opération de copier/coller et aménager ensuite le code ainsi obtenu en fonction du besoin. Les points de passages génériques sont les endroits de prédilection de vos agresseurs. En procédant ainsi vous rendez chaque point de passage unique et donc moins attrayant pour ces derniers.
  • Utilisez les notions de classes, d’attributs et de méthodes en fonction de vos inspirations du moment en dehors de tout standard et de toute attente. Ceci vous apportera un grand sentiment de liberté et aura le bénéfice de mettre vos violeurs en déroute.
  • N’utilisez surtout pas de système d’exceptions. Les exceptions ainsi générées pourraient être dérobés par vos voleurs. Utilisez exclusivement des codes de retour dont vous seul aurez le secret.
  • N’utilisez pas non plus une classification trop précise, elle pourrait fournir des indices à vos agresseurs. Concevez un système hyper générique dans lequel vous seul saurez appliquer le cast qui va bien au moment opportun.
  • Si vous programmez en Java, pour les mettre définitivement en échec, le must serait bien sûr d’utiliser votre propre ClassLoader en prenant soin de ne passer la main aux autres ClassLoader sous-jacents qu’en cas d’absolue nécessité car c’est par là qu’entrent vos voleurs.

Je sais quelle peine cela peut vous causer de devoir écrire un tel code. Aussi, afin de faciliter votre démarche, je vous conseille d’aller faire un stage dans une SSII très réputée pour vous faire coacher par un développeur ou mieux encore par un architecte. Choisissez cette SSII la plus grosse possible. J’ai en effet constaté de par mon expérience que plus elles étaient grosses, plus les intervenants qu’elles proposaient à leurs clients avaient un talent inné pour produire un tel code. Je les en remercie d’ailleurs tous les jours car après leur passage ils laissent de véritables mines d’or. Quand j’arrive ensuite pour restructurer ces grands projets malades je suis alors accueilli en véritable messie.

Voilà, j’espère que ces humbles conseils que je vous prodigues vous permettrons à vous et à beaucoup d’autres de gagner le combat que vous avez engagé contre la programmation orientée Aspect.

     Laurent Simon

Attention, ce billet contient une forte dose d’humour. Sa lecture au premier degré peut provoquer des maladies graves.