Maison >Java >javaDidacticiel >Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Java学习指南
Java学习指南avant
2023-07-26 16:29:001183parcourir


Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

5 façons de concevoir de meilleurs logiciels et de remplacer If-Else. Exemples débutants à avancés

Permettez-moi juste de dire ceci : If-Else est généralement un mauvais choix.

Cela conduit à des conceptions complexes, à une mauvaise lisibilité du code et peut entraîner des difficultés de refactorisation.

Cependant, If-Else est devenu la solution de facto de branchement de code, et cela a du sens. C'est la première chose enseignée à tous les aspirants développeurs. Malheureusement, de nombreux développeurs n’adoptent jamais une stratégie de branchement plus appropriée.

Le mantra de certaines personnes est : Si-Else est un marteau, tout est un clou.

L'incapacité de savoir quand utiliser une méthode plus appropriée est l'une des choses qui différencient les juniors des juniors.

Je vais vous montrer quelques astuces et modèles qui mettront fin à cette horrible pratique.

La difficulté augmente à chaque exemple.

1. Bloc Else complètement inutile

C'est peut-être l'un des plus gros péchés dont sont coupables les développeurs juniors. L'exemple ci-dessous est un excellent exemple de ce qui se passe lorsqu'on vous dit que If-Else est génial.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Supprimez simplement le bloc else` pour simplifier ce processus.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Ça a l'air plus professionnel, non ?

Vous constaterez souvent qu'aucun autre bloc n'est réellement nécessaire. Comme dans ce cas, vous souhaitez effectuer une action et revenir immédiatement si une condition spécifique est remplie.

2. Assignation de valeur

Si vous attribuez une nouvelle valeur à une variable en fonction d'une entrée fournie, arrêtez le non-sens If-Else - une approche plus lisible.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Aussi simple que cela soit, c'est nul. Premièrement, If-Else peut facilement être remplacé par un commutateur ici. Cependant, nous pouvons simplifier davantage ce code en supprimant complètement else.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Si else n’est pas utilisé, nous nous retrouvons avec un code propre et lisible. Notez que j'ai également modifié le style en un retour rapide plutôt qu'une instruction de retour unique - cela ne sert à rien de continuer à tester une valeur si la valeur correcte a déjà été trouvée.


3. Vérifications des préconditions

Habituellement, je trouve que si une méthode fournit une valeur invalide, cela n'a aucun sens de poursuivre l'exécution.

Supposons que nous ayons la méthode DefineGender d'avant, qui nécessite que la valeur d'entrée fournie soit toujours 0 ou 1.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Cela n'a aucun sens d'exécuter la méthode sans validation de valeur. Par conséquent, nous devons vérifier certains prérequis avant d’autoriser la méthode à poursuivre son exécution.

En appliquant la technique de codage défensif de la clause de garde, vous vérifierez la valeur d'entrée de la méthode puis continuerez à exécuter la méthode.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

À ce stade, nous nous assurons que la logique principale n'est exécutée que lorsque la valeur se situe dans la plage attendue.

IF a désormais également été remplacé par un ternaire, car il n'est plus nécessaire de mettre par défaut "inconnu" à la fin.

4. Convertir If-Else en dictionnaire — Évitez complètement If-Else

Supposons que vous deviez effectuer certaines opérations qui sélectionneront en fonction de certaines conditions, nous savons que nous devrons ajouter d'autres opérations plus tard.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Peut-être que certaines personnes préfèrent utiliser le If-Else éprouvé. Si vous ajoutez une nouvelle action, ajoutez simplement autre chose. Très simple. Cependant, cette approche n’est pas une bonne conception en termes de maintenance.

Sachant que nous devrons ajouter de nouvelles opérations plus tard, nous pouvons refactoriser If-Else dans un dictionnaire.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

La lisibilité a été grandement améliorée et le code peut être plus facilement déduit.

Notez que le dictionnaire est placé à l'intérieur de la méthode à des fins d'illustration uniquement. Vous souhaiterez peut-être le fournir ailleurs.

5. Étendre l'application — évitez d'utiliser complètement If-Else

Ceci est un exemple légèrement plus avancé.

Sachez quand éliminer complètement les If en les remplaçant par des objets.

Souvent, vous devrez étendre certaines parties de votre candidature. En tant que développeur junior, vous pourriez être tenté de le faire en ajoutant des instructions If-Else (c'est-à-dire else-if) supplémentaires.

Donnez cet exemple illustratif. Ici, nous devons afficher l’instance Order sous forme de chaîne. Premièrement, nous n'avons que deux représentations sous forme de chaîne : JSON et texte brut. Utiliser If-Else n’est pas un gros problème à ce stade, si l’on peut facilement remplacer les autres, comme mentionné précédemment.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Sachant que nous devons faire évoluer cette partie de l'application, cette approche est absolument inacceptable.

Le code ci-dessus viole non seulement le principe « ouvrir/fermer », mais il ne se lit pas non plus bien et peut causer des problèmes de maintenabilité.

L'approche correcte est celle qui suit les principes SOLID - nous le faisons en implémentant un processus de découverte de type dynamique (dans ce cas, le modèle de stratégie).

Le processus de refactorisation de ce processus compliqué est le suivant :

· Extrayez chaque branche dans une classe de stratégie distincte à l'aide d'une interface commune

· Recherchez dynamiquement toutes les classes qui implémentent l'interface commune

· Décidez quelle stratégie exécuter en fonction de la input

Le code pour remplacer l'exemple ci-dessus est le suivant. Oui, c'est bien plus de code. Cela nécessite que vous compreniez comment fonctionne la découverte de types. Mais la mise à l’échelle dynamique des applications est un sujet avancé.

Je ne montre que la partie exacte qui remplacera l'exemple If-Else. Si vous voulez voir tous les objets impliqués, consultez cet aperçu.

Comment notre entreprise a-t-elle complètement éliminé 2 000 if-else dans le projet ?

Jetons un coup d'œil rapide au code.

La signature de la méthode reste inchangée car l'appelant n'a pas besoin de connaître notre refactorisation.

Tout d’abord, récupérez tous les types de l’assembly qui implémentent l’interface commune IOrderOutputStrategy. Ensuite, nous créons un dictionnaire, le nom du displayName du formateur est key et le type est value.

Sélectionnez ensuite le type de formateur dans le dictionnaire et essayez d'instancier l'objet de stratégie.

Enfin, appelez ConvertOrderToString de l'objet stratégie.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer