Cadres - plus d'inconvénients que d'avantages

La raison de cet article était une autre publication sur Habré. Il s'appelle "Ne pas apprendre les frameworks, apprendre l'architecture" et vous pouvez le lire ici .

Je vais faire une réservation tout de suite que je suis entièrement d'accord avec l'auteur et je veux juste ajouter mes "trois sous". Au début, j'ai pensé à le faire correctement dans les commentaires sous l'article, mais j'ai rapidement réalisé que le «penny» était assez volumineux. Et donc ce texte est né.

D'abord, un peu de toi


Je suis engagé dans le développement Web depuis un an depuis le 98ème. Il a travaillé pour l'entreprise et pigiste. Il a recruté des équipes. Dans la vie réelle et en ligne. Le premier langage de programmation était Perl, qui est maintenant décédé en toute sécurité, et je regrette toujours sa disparition prématurée. Puis vint php. Un peu plus tard, le rubis et l'ère des feux d'artifice ont commencé.

De grandes promesses de petites réalisations


Je l'ai rencontrée avec enthousiasme. En effet - il semble qu'un outil soit apparu qui soit conçu pour faciliter considérablement le développement, ce qui peut vous épargner beaucoup de routine. Cependant, l'enthousiasme a rapidement disparu. Et voici pourquoi.

Je ne sais pas qui comment, mais, tout d’abord, je m’attendais à me débarrasser d’un grand nombre d’actions monotones que j’ai dû mener lors de chaque nouveau projet. Concevez la «colonne vertébrale» de la base, écrivez la sortie essentiellement des mêmes pages de texte, etc., etc. Ceux qui ont écrit un nombre suffisant de sites complèteront facilement cette liste de nombreux points. Et la plupart des feux d'artifice économisent beaucoup de routine. Mais à quel prix!

Et cette fois ... et ces deux ...

Erast Fandorin
Ma première plainte concerne RoR, Yii, Symfony et presque tous les autres que j'ai rencontrés - leur monstruosité et des tonnes de code complètement redondant qui finissent invariablement dans le projet. Habitué à plus de plusieurs années de travail, que le code soit aussi propre et concis que possible, que l’application soit aussi rapide que possible, je ne pouvais pas accepter les ordures (excusez-moi, je ne peux pas dire le contraire) que j’ai fini dans des projets.

La deuxième affirmation est une tentative de tous, sans exception, des auteurs de feux d'artifice à inventer, quelque chose comme leur langage de programmation. Permettez-moi d'expliquer ce que je veux dire. Prenons par exemple la bibliothèque js jQuery la plus courante. En même temps, je ferai tout de suite une réserve que je considère comme étant presque les seules épithètes utiles, compétentes et nombreuses, flatteuses, entre autres. Je donne jq comme exemple uniquement parce que tout le monde comprendra certainement ce que je veux dire. Et donc vous pouvez accéder à l'élément par ID sur des js natifs comme document.getElementById ("id"), et comme jQuery $ ("# id"). Le fait qu'il ait été écrit une douzaine de caractères de moins n'est pas très impressionnant. Dans le même temps, jq a un tas d'autres avantages pour lesquels je suis prêt à apprendre une nouvelle syntaxe. De plus, il est fiable et n'entre presque jamais en conflit avec d'autres bibliothèques. Ce qui ne peut pas être dit, et un tas de son espèce, qui devraient remplacer.

Encore une fois, je ferai une réservation - je ne suis en aucun cas contre d'apprendre quelque chose de nouveau. Mais seulement si ce nouveau rend mon code plus propre et plus rapide. Si j'ai besoin d'apprendre quelque chose pour pouvoir plus tard riveter des sites du même type qu'un singe et n'ose pas faire un pas à gauche, pas à droite, parce que je ne savais pas comment - merci.

Oui, le pire est qu'une telle approche de la programmation use simplement de réflexion et lorsque ce nouveau cadre super cool échoue, et cela, croyez-moi, se produit dès que le client vous demande quelque chose qui est au moins légèrement hors de portée, malheur au cadre (j'ai récemment découvert qu'il existe désormais une telle profession) tombe dans la stupeur et commence à poser des questions stupides dans tous les forums qui lui sont accessibles. Tout est téléchargé par le fait qu'un des programmeurs (pas un framework) sculpte une béquille pour cela et Dieu ne plaise pas au client de ne pas auditer le code.

Et ce sont trois ...

Il est

Tout ce qui précède s'applique non seulement à l'avant, mais aussi à l'arrière. En conséquence, la question se pose - au tout début, j'ai reconnu que lors de tout développement, je dois effectuer de nombreux gestes inutiles que j'aimerais optimiser, mais cela peut-il être fait à un tel prix? Et en plus, il y a un autre point, qui concerne pour la plupart le développement en Ruby.

Pour implémenter les fonctions les plus élémentaires d'une application Web, vous devez connecter des gemmes distinctes. Pour se nourrir de la base de données - mysql2, pour envoyer du courrier - mail ou poni créé sur sa base. Et ainsi de suite et ainsi de suite. À première vue, il n'y a rien de mal à cela - toutes les gemmes de Ruby sont généralement bien testées et il n'y a aucun problème avec elles. Mais il existe également des exceptions à cette règle. Par exemple, une fois par semaine, je devais m'asseoir avec odf-report, qui ne voulait pas fonctionner correctement, puis cracher et écrire ma classe. De plus, il est quelque peu gênant qu'avec la connexion de chaque gemme, le temps de formation des pages augmente inévitablement. Sur certains gem-ahs très légèrement. Et pas certains .... Essayez d'expérimenter sur ce sujet avec le poney déjà mentionné - voyez par vous-même.

La question éternelle


Et que faire? D'une part, le développement dans un langage «pur» n'est certainement pas une option, mais d'autre part, les outils existants ne sont pas satisfaits pour plusieurs raisons? La sortie est vue en créant un outil qui optimise les fonctions les plus fréquemment utilisées et en même temps ne gêne pas le programmeur, et ne lui impose pas un style de programmation que l'auteur de cet outil considère comme le seul correct. En pratique, cela signifie que l'outil doit:

  1. contiennent un ensemble minimum de fonctions optimisées standard et maximales
  2. l'outil ne doit pas forcer le programmeur à apprendre quelque chose comme un nouveau «non-langage» de programmation qui désactive complètement le cerveau
  3. et tout cela, idéalement, devrait être transformé en une bibliothèque légère qui n'essaye pas de rivaliser en termes de quantité de code avec le système d'exploitation.

Peut-être que je me trompe, mais jusqu'à présent, personne n'a pu me convaincre du contraire. Prêt à écouter toutes les opinions.

Source: https://habr.com/ru/post/fr476424/


All Articles