Pour quelles raisons dois-je garder la section «Utilisation» propre en C #?

11

Une fois que je refactorisais mon code, j'ai remonté l'EDI dans la section using de ma classe C #, nettoyé les espaces de noms inutilisés et les espaces de noms en double , et les ai tous triés.

Ma paire (programmation par paire) m'a demandé la raison. Je ne savais pas pourquoi j'avais fait ça. Je l'ai fait par habitude pour garder tout mon code propre et bien rangé. Je veux dire, je lui ai dit qu'avoir un code plus propre est une bonne idée en général, mais bien sûr, cette raison n'était pas une bonne justification, car je ne prendrai même pas la peine de passer mon temps dans la section d' utilisation de n'importe quelle page de code C #.

Depuis de nombreuses fois, vous déplacez une classe ou une énumération (ou un type en général) d'un espace de noms vers un autre espace de noms, et cela ajoute de nouvelles instructions using à votre code (soit manuellement en remontant la fenêtre de code et en écrivant vous-même l'instruction using, ou via l'éditeur en utilisant la combinaison Alt+ Ctrl+ F10), et puisque ces nouvelles instructions using seraient ajoutées à la fin de la section using , ce qui les rend non triées par ordre alphabétique, et puisque le compilateur ne se plaint jamais de l'un de ces problèmes, pourquoi devrions-nous prendre soin de faire cela section propre et bien rangée? Quelles raisons pourrions-nous avoir?

Saeed Neamati
la source
5
Cela a déjà été demandé et répondu sur Stack Overflow - stackoverflow.com/questions/4163320/unused-using-statements (et les deux questions liées dans la barre latérale) - fondamentalement, il n'y a aucune raison de s'inquiéter des utilisations inutilisées
ChrisF
Grande référence @ChrisF, je pense avoir obtenu ma réponse là-bas. Vous devriez peut-être joindre la question à celle-là ou faire quelque chose de similaire. :)
Saeed Neamati
Vérifiez également ceci: stackoverflow.com/a/136646/333306

Réponses:

22

Il n'y a aucune différence de performances, quel que soit le nombre de usingdirectives dont vous disposez.

Mais je pense qu'il est logique de les garder propres pour deux raisons:

  1. Si vous regardez le usings, vous pouvez voir les dépendances du fichier. Cela peut vous aider à comprendre ce que font les types dans le fichier. Si vous faites cela, avoir les usings dans un ordre spécifique vous aide à le voir plus rapidement.
  2. Si vous en avez trop using, cela peut indiquer que la séparation des préoccupations est mauvaise et que le ou les types dans le fichier en font trop.

Ces deux éléments ne sont pas très importants, vous ne devriez donc pas trop vous en soucier. Mais personnellement, je pense que cela vaut la peine de garder le usings propre.

svick
la source
8

Mes principales raisons de nettoyer parmi les instructions using sont:

  • Plus les instructions sont utilisées, plus il est possible de nommer les conflits, ce qui signifie que vous devez inclure des parties de l'espace de noms dans le code pour éviter toute ambiguïté.
  • L'IntelliSense est filtré en fonction de tous les assemblys de vos instructions using. Par conséquent, si vous nettoyez les déclarations inutiles, vous vous aiderez en contribuant à la précision d'IntelliSense.

En plus de cela, je suis d'accord avec les autres réponses dans la mesure où cela augmente la lisibilité et facilite la compréhension de ce que font les types de la classe.

Fredrik Ljung
la source
Je ne comprends pas pourquoi ce vote n'est pas plus élevé. Les conflits d'espace de noms sont un problème légitime.
RubberDuck
7

«La perfection n'est pas atteinte lorsqu'il n'y a plus rien à ajouter, mais quand il n'y a plus rien à emporter» - Antoine de Saint-Exupéry

Chaque fois que vous pouvez supprimer quelque chose qui n'est pas nécessaire et n'ajoute pas de compréhension, faites-le (la lisibilité vaut du code supplémentaire).

jmoreno
la source
Grand aphorisme. J'ai aimé l'idée. +1;)
Saeed Neamati
4

Il suffit de supprimer le bruit du signal. Moins de bruit signifie qu'il est plus facile de recevoir le signal, c'est-à-dire de comprendre l'intention du code.

En tant que générateur de bruit, il est cependant assez mineur.

Ian
la source
2
  • Il améliore la lisibilité de votre code.
  • Normalement, cela n'a pas de sens de suivre cette directive si vous avez peu de phrases à utiliser

  • Il est plus logique de séparer les instructions using en sections.

Par exemple:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Si je regarde la classe, je peux voir instantanément que la classe donnée utilise l'assembly System.Web, ainsi que notre plate-forme et notre framework. Cela me donne une idée approximative de ses dépendances et de sa complexité.

Vous pouvez ensuite aller un peu plus loin et ordonner les instructions, mais je pense que cela rend l'utilisation des instructions moins lisible, donc je ne recommanderais pas cela.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
CodeART
la source