Y a-t-il des avantages à supprimer les instructions using inutilisées dans un projet VS?

21

Y a-t-il des avantages à supprimer les instructions using inutilisées dans un projet VS (comme cela peut être fait à l'aide de Resharper), ou VS s'en occupera-t-il automatiquement lors de la construction / du déploiement?

Clay Shannon
la source
1
Avoir l'impression que vous avez posé des questions sur removing unused references(DLL) et toutes les réponses sont sur le point removing unused using statements.
Răzvan Flavius ​​Panda
@ RăzvanPanda: Non, il est utilise des déclarations; Je vais devoir tchèque si vous pouvez faire ce dernier avec R # - ce serait aussi une température agréablement basse.
B. Clay Shannon
Aight, en corrigeant la formulation pour qu'elle corresponde au sens.
Răzvan Flavius ​​Panda
1
vous pouvez supprimer les références DLL inutilisées avec le dernier R #, mais il est important de faire attention aux références DLL dynamiques ou les choses peuvent se casser lors de l'exécution.
Răzvan Flavius ​​Panda

Réponses:

23

Il n'y a aucun avantage en termes de performances, si c'est ce que vous voulez dire.

Toutes les références dans un assemblage sont pleinement qualifiées; le compilateur utilise simplement les références que vous fournissez dans votre code pour qualifier pleinement les identificateurs, donc le seul impact des références inutilisées dans votre code source est une légère diminution de la lisibilité (pourquoi cette référence est-elle ici?), et une augmentation triviale du temps de compilation.

En d'autres termes, l'IL généré est exactement le même, que vous supprimiez ou non les références inutilisées.

Robert Harvey
la source
Il peut y avoir un avantage indirect à supprimer les utilisations inutilisées. Si cela permet à son tour de supprimer une ou plusieurs références à des DLL externes dans une solution, cela pourrait bénéficier à la taille de déploiement de l'application et / ou au temps de démarrage.
déversoir
1
L'IL généré ne change pas si vous supprimez les utilisations, donc je ne vois pas comment tout serait affecté.
Robert Harvey
Vrai: IL ne changera pas si vous ajoutez des usingréférences s ou DLL inutilisées ( Reference Includeélément de fichier MSBuild, /reference:argument CSC). J'avais à l'esprit: Supprimer les usings inutilisés d'un projet d'application Web. Celles-ci avaient été les seules lignes de code obligeant à inclure un tas de références DLL, alors supprimez-les maintenant. Comme vous le dites, la construction est plus rapide, plus encore si les références sont des chemins UNC (CSC vérifie tous les chemins de référence). Trivial win 2: la vitesse du CI (les scripts récupèrent toutes les DLL référencées) s'améliore car moins de fichiers sont copiés, par exemple du serveur de contrôle de source vers le serveur de génération pour publier le serveur sur le (s) serveur (s) d'application.
déversoir le
Un code plus court est un code plus lisible. Moins c'est plus - c'est l'avantage et cela vaut la peine de le faire pour cette raison.
niico
24

Oui - je peux penser à deux avantages principaux:

  1. Au-delà de son objectif fonctionnel principal (c.-à-d. Réduire la verbosité du code), la liste d'instructions 'Using' en haut d'un fichier de code peut indiquer aux futurs lecteurs (en particulier ceux sans Resharper) quels espaces de noms sont (ou du moins étaient ) pertinents pour ce fichier de code . Si vous élaguez activement cette liste, elle peut agir comme un meilleur mécanisme de signalisation.
  2. La suppression des espaces de noms inutilisés réduira le nombre de candidats à la saisie semi-automatique dans votre éditeur de texte lors de la frappe. Si vous comptez sur les listes de saisie semi-automatique, cela vous aidera à rester "sur la ligne droite et étroite" et peut même augmenter votre vitesse de frappe, car vous devriez être en mesure de trouver votre candidat à la saisie semi-automatique un peu plus rapidement.
Jim G.
la source
1
Ah, très bons points, surtout # 2!
B. Clay Shannon
0

Supprimer le code inutilisé n'est qu'un bagage supplémentaire et difficile à mesurer les gains d'efficacité.

  • La suppression du code inutilisé réduit le temps de compilation, je travaille sur un projet qui prend entre 15 et 20 minutes, il y a des tonnes de code inutilisé. L'élimination du code inutilisé a réduit le temps de compilation à ~ 7 minutes. Cela fait une différence quand il y a beaucoup de développeurs dans l'équipe, cela fait gagner du temps à tout le monde pour construire et tester rapidement.

  • Si vous avez automatisé votre build et vos tests unitaires, vous avez maintenant supprimé les tests unitaires dont vous n'avez pas besoin. encore une fois, cela réduit le temps nécessaire pour exécuter les tests unitaires. Juste une efficacité accrue dans votre processus de gestion de construction continue.

    • Le code non utilisé entraîne une plus grande empreinte de vos binaires. Avoir une empreinte de code plus petite réduira le temps de chargement / démarrage initial. Bien que les gains puissent être très maigres et subjectifs.
Betnag
la source
4
la question n'est pas sur le code inutilisé en général, c'est sur les références inutilisées
gnat
... voir Comment répondre : « Lisez la question attentivement Que,. en particulier , est la question demandant Assurez - vous que votre réponse prévoit que - ou une alternative viable ...? »
moucheron