Vous êtes sur Barbablog et tu kiffes jeune. Cherche sur ce blog...

La programmation orientée objet, c’est de la flûte

Je parlais l’autre jour avec un ami chef de projet dans l’informatique. Avant d’être chef de projet il avait été lui-même développeur ; il avait les cheveux longs, il portait des baskets et mettait systématiquement une chemise par dessus ses T-Shirts. Aujourd’hui, il met des costumes et il est toujours au contact de développeurs dont certains sont du genre forcenés[1]. Cet ami me disait que la POO c’était un peu de la flûte car même chez les développeurs les plus hard core qu’il ait pu croiser, il n’en a jamais vu un qui travaillait en pure POO avec héritage, polymorphisme et tout ce qui va avec (maux de têtes, bouton de stress…).

L’eldorado du développement

Pourtant, la POO, c’est l’eldorado du developpement, la modernité incarnée, le truc moderne qui remise la programmation procédurale [2] au rang d’antiquité. Certains affirment que la programmation procédurale serait au developpement ce qu’Indochine est à la musique : un truc has been qui a eu son heure de gloire dans les années 80. Et pourtant… Indochine a fait son come back. Il y a même des gens qui vont voir leur concerts [3].

Ami lecteur, ne t’y trompes pas, ce billet n’est pas une réhabilitation en règle d’Indochine [4] mais bel et bien un plaidoyer en faveur de la programmation procédurale.

Le full object : un peu surdimensionné pour des projets web

Je ne nie pas que dans certains projets énormes type SI de banque, d’assurance ou de finance il faille un truc très solide et très cher du genre java J2E architecture haine-tiers afin pouvoir rassurer les clients et les actionnaires en tenant un discours du genre :

Notre progiciel de gestion d’information de thunes est l’un des plus performant du marché. Basé sur un architecture n-tiers, il est bien évidemment programmé en pur objet, à tel point qu’il faut que nous engagions des ingénieurs ayant fait un post-doc à Harvard pour effectuer une connexion avec notre base de données multidimensionnelle. Pour deux connexions, c’est 2 ingénieurs. Ils sont bien évidemment payés une fortune, c’est pourquoi notre logiciel est si cher mais tellement performant.

Pour les projets web, la POO me paraît être un peu sur-dimensionnée. Evidemment quand on touche à Rails, on fait de l’objet, dans WordPress il y a de l’objet, dans la moindre librairie javascript il y a de l’objet. Pourtant lorsqu’on utilise Rails, WordPress ou Mootools, on définit rarement des classes avec héritage, prototype, polymorphisme et tout l’arsenal de guerre qui va avec. On ne fait qu’utiliser des objets prédéfinis. Pour le reste, je dis vive la bonne vieille fonction – tout particulièrement côté client. Je m’explique.

Côté client : à n’utiliser que lorsque c’est nécessaire

Le javascript est un langage créé par Brendan Eich pour la sortie de Netscape 2. L’objectif de Eich lorsqu’il crée ce langage est d’offrir aux développeurs web – lesquels n’étaient pas réputés pour être des bêtes de code – un moyen simple d’ajouter un peu d’interactivité à leurs pages web. L’idée était de leur offrir la possibilité de copier des scripts d’autres pages et de coller en les adaptant sur leurs propres pages.

C’est pour cette raison que lorsque je vois sur une page web un comportements un peu sympa genre accordéon et que je voie dans le code que le gars s’est amusé à faire objet pour afficher / masquer un div dans une page là où une simple fonction aurait suffit, ça me fait mal aux yeux.

Utiliser un objet au lieu d’une fonction pour afficher/masquer un élement sur une page, c’est un peu comme si on voulait écraser une mouche avec un tank lorsqu’un simple torchon suffit.

Pour conclure, je citerai l’introduction d’un livre sur le javascript :

Ce livre ne traite que des langages et des fonctionnalités avec lesquelles je travaille. Le javascript orienté objet, par exemple, est délibérément absent de ce livre car je n’ai jamais vu la nécessité de l’utiliser.

Qui est le blaireau qui peut bien commencer son livre comme ça ? C’est Peter Paul Koch, un des gourous du javascript dans son livre ppk on javascript [5].

  1. Ils travaillent toute la journée sur linux, les fous
  2. À base de fonction, ou de procédures
  3. Les fous
  4. Personne n’est assez doué pour y arriver
  5. Que je vous conseille vivement, quelque soit votre avis sur la Poo !