Cette guerre de chapelle est un peu triste à lire, surtout que hormis quelques attaques ad hominem tout le monde à a peu près raison sur ce topic. A peu près car beaucoup de ce qui est dit peut être valide ou non selon le contexte, par exemple valider l'url dans le constructeur de la classe peut être un choix valide ou très nul selon l'architecture du système.
La POO c'est vraiment génial pour réaliser tout ce qui à des specs de base bien définies. Évidemment aucune application n'a des specs parfaites en amont (imaginez, le rêve !), mais il faut au moins que le cœur de l'application soit stable. C'est du au fait que la POO nécessite pas mal de code boilerplate, rien d'horrible surtout grâce aux IDE, mais ça fait que changer de stratégie en milieu de parcours est vraiment pénible.
Un exemple réel pour illustrer : je bosse pour une boite qui, en très gros, gère des documents légaux et permet à nos clients de s'assurer de la conformité de leurs documents. L'entreprise est historiquement centrée sur tout ce qui est législation environnementale et ce depuis 15 ans, avec aucun signe de changement, on peut donc vraisemblablement lors du design de la nouvelle appli se dire que c'est acquis. Or, 3-4 mois dans le développement, on nous annonce un chamboulement, conquête de nouveaux marchés etc. On passe donc d'une boite environnementale à une boite supportant tous types de documents, qui va implémenter de la gestion opérationnelle, et autres joyeusetés absolument pas au rendez vous initial. Il a fallu réécrire quasiment l'intégralité du code, notre système de base étant devenu un espèce de sous-système du nouveau logiciel.
On aurait très facilement pu ajouter les nouvelles briques (gestion opérationnelle, etc) sur l'existant, mais comme le coeur même du système est chamboulé il a fallu repenser toute l'architecture. Après coup, je suis certain que si on avait eu initialement un code en fonctionnel au lieu de orienté objet on aurait pu réutiliser beaucoup plus de composants.
On pourrait se dire que après cette "mésaventure", on soit passé sur du fonctionnel, un backend type NodeJS, mais non. A mon sens la très grande force de l'OO c'est sa lisibilité, sa facilité à maintenir et la simplicité à construire par dessus SI on comprend bien les concepts. Je ne veux pas parler pour tous les devs mais l'OO chez moi c'est quelque chose qui a fait clic un jour, la veille tu es dubitatif sur la nécessité d'une telle complexité, tu n'es jamais vraiment sur de comment interfacer tes classes ensembles, tu sais qu'il ne faut pas trop coupler ton code mais ça semble tellement pénible, ... et le lendemain tout est clair. Tout ce qui semblait complexe est soudainement clair, simple et compréhensible, c'est même beau. En lisant 2-3 classes d'un projet tu comprends tout de suite comment c'est architecturé, comment construire la suite, etc. A chaque fois que je termine un module, je suis super content car je sais que ce code est capable de survivre facilement à mon départ un jour et que mon successeur sera capable de prendre la suite facilement.
Pour Javascript, je pense que faire de la programmation basé sur les prototypes c'est vraiment passer à côté de la force du langage qui est le paradigme fonctionnel. Si la POO demande pas mal de boilerplate pour fonctionner, les prototypes en JS c'est de loin la taille au dessus. L'exemple en page 2 ou 3 avec Object.defineProperty c'est juste horrible, je n'ose même pas imaginer devoir décrire mes objets par ce biais. A mon avis JavaScript devrait pousser du côté fonctionnel, cette façon de coder compense le manque de typage niveau stabilité et rend les tests unitaires très simples.
Si JS est largement utilisé de nos jours c'est entre autres pour cette grande flexibilité. Le souci c'est que le langage "souffre" de sa simplicité de la même manière que PHP à souffert de la sienne. Comme c'est très simple de faire un truc qui marche dans ces langages, il y a beaucoup de novices, ce qui n'est en soit pas un mal sauf quand ces novices sont propulsés à des postes qui demandent des compétences plus grandes (coucou les SSII) ou pire qu'ils pensent avoir tout compris à l'informatique. On vient de virer un collègue qui après 5 ans d'expérience en front-end ne savait pas sélectionner une div ou utiliser les constructions de base du JS (genre map, filter, for..in), il faisait son taf en abusant des libs type lodash et de stack overflow, et forcément un jour ça se voit.
Bref peace les gars, vous savez tous que chaque langage est mieux adapté à certains cas que d'autres. Cette conversation pourrait être super intéressante comme comparaison de paradigmes basé sur des expériences vécues et tout le monde pourrait en sortir grandi, il suffit de mettre un peu d'eau dans son vin (ne faites pas ca en vrai, c'est dégeu

)
4 |
0 |