Quel est le problème avec les traits?





Il semble que vous ayez juste besoin de dire «traits» - et le holivar commencera. Nous en avons déjà commencé un par accident il y a quelques semaines. Et puis nous avons décidé de le découvrir. Qu'est-ce que c'est de plus? Un moyen de réduire la duplication de code. Un moyen rapide de mettre en œuvre des fonctionnalités. Implémentation par défaut de l'interface. Ou un mal ancien?



Considérez avec des exemples - ce mercredi soir sur YouTube . Et ci-dessous vous pouvez voir les positions des participants à la diffusion.



Comment ça va être. Nous allons organiser quelque chose proche d'un débat: une série de tours, des adversaires, un modérateur. Et voter pour le poste que vous aimez.



Valentin Udaltsov (auteur de la chaîne Pykh ) sera un fervent adversaire des traits. Roman Pronsky ( PHP-Digest ) - hôte. Eh bien, le reste des gars défendra la bonne réputation des traits.





Kirill Nesmeyanov, développeur avocat chez SpiralScout, membre du comité de programmation PHP Russie



- Quel est le problème avec les traits?



- Oui, tout est "comme ça" avec eux: c'est un outil - utilisez-le correctement. Marteler des clous avec un microscope n'est pas très intelligent. Le problème, ce sont ceux qui essaient de les pousser là où ils ne devraient pas, puis ils se disent: "Eh bien, c'est tout, je ferais mieux d'aller au front-end . "



- Pourquoi êtes-vous intéressé à en parler?



- Parce que tout le monde ne comprend pas pour quelle gamme de tâches les traits ont été inventés. Pour une raison quelconque, ils sont généralement considérés comme un moyen de découper physiquement les classes. Il est temps d'arrêter!



- 2 heures en ligne peuvent-elles vous faire changer de position?



- Non.





Sergey Zhuk, chef d'équipe chez Skyeng, animateur du podcast "Between Brackets"



- Quel est le problème avec les traits?



- Comme tout outil, le trait doit être dans l'arsenal du développeur. Mais cela vaut la peine de l'utiliser correctement: par exemple, pour partager certaines méthodes d'assistance entre des classes non liées dans des bibliothèques, où nous voulons donner aux utilisateurs la possibilité d'étendre les fonctionnalités sans héritage ni DI.



Bien sûr, les traits peuvent devenir fuyants. Et pour ne pas me tirer une balle dans le pied, j'ai identifié trois règles pour moi-même:



  • Tout trait doit avoir une interface correspondante.
  • Un trait doit être complètement autosuffisant: tout ce qu'il utilise doit être déclaré en lui-même.
  • Les traits doivent être aussi petits que possible. Idéalement, une méthode, un trait.


- Pourquoi êtes-vous intéressé à en parler?



- De nombreux développeurs s'opposent fermement à cette fonctionnalité PHP. Il serait intéressant de discuter avec eux. Jusqu'à présent, pour moi, cela ressemble à: "J'ai essayé git rebase -> j'ai foiré mon dépôt -> git rebase est mauvais . "



- 2 heures en ligne peuvent-elles vous faire changer de position?



- Oui.





Ivan Leschev, développeur chez BotHelp.io



- Quel est le problème avec les traits?



- Tout va bien, juste quelqu'un ne sait pas comment les cuisiner correctement.



- Pourquoi êtes-vous intéressé à en parler?



- Il est intéressant de regarder des exemples de bon et de mauvais design.



- 2 heures en ligne peuvent-elles vous faire changer de position?



- Plus probablement non que oui.





Alexander Dubovskoy, CTO chez Radon, membre actif de la communauté Drupal



- Quel est le problème avec les traits?



- C'est comme ça. C'est juste un marteau que vous pouvez frapper au doigt.



Holyvar s'étend au moins de l'article de 2011 d'Anthony Ferrara, Are traits the new eval . Mais il y avait ensuite quelques beaux exemples, pour lesquels vous pouvez désormais accéder facilement aux composants Symfony. Le même LockableTrait est terriblement pratique et compréhensible pourquoi et pourquoi)



- Pourquoi êtes-vous intéressé à en parler?



- Tout litige architectural est intéressant. À tout le moins, vous entendrez de nouveaux points de vue et découvrirez quoi d'autre à lire.



- 2 heures en ligne peuvent-elles vous faire changer de position?



- Non.



ps

Nikita Popov: Je n'aime pas particulièrement les traits. Je suis impliqué dans le développement depuis PHP 5.5 et ils ont été ajoutés en 5.4. Si j'avais été alors, ils n'auraient certainement pas été ajoutés.



pps S'il y a une bonne histoire sur la façon dont les traits ont sauvé ou ruiné tout le monde, veuillez la partager sur le flux du 23 décembre . Et dans tous les cas, connectez-vous.



All Articles