Si je ne pouvais enseigner qu'une seule chose à un développeur débutant
Il y a quelques semaines, j'ai eu une idée intéressante en écrivant un article de blog sur la façon d' abstraire votre code pour le rendre plus facile à réutiliser. Je voulais savoir ce que les autres développeurs pensent être le principe le plus important qu'ils enseigneraient à un développeur débutant et pourquoi ils choisiraient ce principe de conception.
J'ai donc fait quelques "interviews" différentes, certaines sur WeChat , quelques-unes par Google Forms et le reste à partir d'un fil Google Chat en interne.

Principe de responsabilité unique
Le résultat est super excitant. Le principe numéro un est le « principe de responsabilité unique », ou SRP en abrégé. Bien qu'il existe d'autres interprétations, normalement, SRP signifie que vous devez garder votre fonction, classe ou module aussi simple et cohérent que possible.
Un exemple concret de cela serait quelque chose que j'ai exercé à partir du fil Google Chat :
… Je leur suggère de donner à leurs fonctions des noms significatifs (relatifs au premier point) et de voir s'ils doivent utiliser des conjonctions comme et/ou pour définir ce que fait la fonction. Si tel est le cas, ils devraient diviser cette fonction…
Cela s'appliquait également à différents niveaux de votre code. Par exemple, une classe ne doit pas faire deux choses différentes sans rapport. Une classe de données Person
peut avoir name
, address
et dob
, mais la méthode deliver
serait trop.
Par exemple, ci-dessous est un exemple dont j'ai parlé dans cet article , un Avatar
composant inclut un Tooltip
et le montrera lorsqu'il props.name
est fourni. En appliquant SRP, vous souhaiterez peut-être diviser le Tooltip
code associé au consommateur et vous assurer que Avatar
seul se soucie de la logique liée à l'avatar.

Encapsulation
Le deuxième sujet le plus sélectionné est l'encapsulation. Naïvement, cela pourrait signifier ne pas utiliser de données ou de fonctions dispersées, et elles doivent être encapsulées dans une classe ou plus. Mais au-delà de cela, cela peut également signifier que vous devez savoir quelles données et méthodes doivent être placées où.
Je vais utiliser l'exemple de mon autre article ici et montrer comment nous pouvons utiliser class
pour encapsuler facilement ces données exposées.
Il est courant de voir ces petites fonctions de transformation de données avec les composants React, et comme la façon dont le frontend consomme ces données change (mappage abbr au nom complet ou ajout de logique if-else si nécessaire), ces petites fonctions de niveau supérieur ont commencé à être difficiles à maintenir .

Nous pourrions alors avoir un class
pour toutes les fonctions de données et de transformation. Et nous avons un endroit unique pour modifier si une logique pour cette transformation change. Il est également plus facile de configurer les tests - vous définissez l'entrée avec quelques variations et vérifiez la sortie des méthodes publiques de la classe.

Ne vous répétez pas
Le numéro trois sur la liste est DRY - Ne vous répétez pas. Nous détestons tous répéter le travail lors du codage, surtout lorsque nous devons le faire manuellement. De manière générale, la règle de trois s'applique dans la plupart des cas, ce qui signifie que vous ne pouvez accepter que moins de trois cas de duplication.
Une chose à noter ici, tout comme les autres principes du développement de logiciels, est que vous devez d'abord chercher à comprendre le but derrière la duplication, puis démolir cette duplication. Il y a quelques lectures intéressantes (je les ai mises dans la section de référence en bas) où vous ne devriez pas supprimer la duplication.
J'ai trouvé que différents langages de programmation fournissent des mécanismes qui rendent le DRY plus facile ou plus difficile. Par exemple, dans les langages de programmation fonctionnels, vous pouvez les transmettre comme des variables car les fonctions sont de première classe, ce qui est impossible dans les langages orientés objet purs.

Et ensuite, vous pouvez transmettre n'importe quelle fonction pour éviter les doublons, comme :

En Java, par exemple (si mes connaissances Java doivent être mises à jour, veuillez commenter pour me le faire savoir), vous devez d'abord créer une interface et passer dans les classes qui implémentent l'interface pour que cela se produise, ce qui est assez lourd.
Sommaire
Ces trois grands principes sont enracinés dans l'esprit de la plupart des développeurs, bien qu'il existe des interprétations légèrement différentes d'une personne à l'autre.
Le SRP garantit que vous vous concentrez uniquement sur une chose et que vous la rendez parfaite, et si c'est bien fait, la testabilité et la composabilité suivent toutes. Bien que l'encapsulation vous aide à placer un contenu, un algorithme, des données et une logique cohérents dans un endroit central, elle contribue également à faciliter la compréhension du code. Et enfin, DRY garde le code toujours dans un état simple et concis. De plus, vous n'avez pas à vous soucier d'oublier de mettre à jour les autres endroits lors de la modification.
Références:
- Ne vous répétez pas
- Adieu le code propre
- La mauvaise abstraction