Per quali motivi devo mantenere pulita la sezione "utilizzo" in C #?


11

Una volta, durante il refactoring del mio codice, sono passato all'IDE nella sezione using della mia classe C #, e ho pulito spazi dei nomi inutilizzati e spazi dei nomi duplicati e li ho ordinati tutti.

La mia coppia (programmazione di coppia) mi ha chiesto il motivo. Non avevo idea del perché l'ho fatto. Ho preso l'abitudine di mantenere tutto il mio codice pulito e ordinato. Voglio dire, gli ho detto che avere un codice più pulito è una buona idea in generale, ma ovviamente quella ragione non era una buona giustificazione, dato che non mi prenderò nemmeno il tempo di passare il tempo a usare la sezione di qualsiasi pagina di codice C #.

Poiché molte volte sposti una classe o un enum (o un tipo in generale) da uno spazio dei nomi a un altro spazio dei nomi, e questo aggiunge nuove istruzioni using al tuo codice (o manualmente salendo la finestra del codice e scrivendo tu stesso l'istruzione using, oppure tramite l'editor che utilizza la combinazione Alt+ Ctrl+ F10) e poiché queste nuove istruzioni using sarebbero state aggiunte alla fine della sezione using , il che le rende non ordinate alfabeticamente, e poiché il compilatore non si lamenta mai di nessuno di questi problemi, perché dovremmo preoccuparci di farlo sezione pulita e ordinata? Quali ragioni potremmo avere?


5
Questo è già stato chiesto e risposto su Stack Overflow - stackoverflow.com/questions/4163320/unused-using-statements (e le due domande collegate sulla barra laterale) - praticamente non c'è motivo di preoccuparsi di utilizzi non utilizzati
ChrisF

Ottimo riferimento @ChrisF, penso di aver ottenuto la mia risposta lì. Forse dovresti unirti alla domanda con quello o fare qualcosa di simile. :)
Saeed Neamati,

Check this out anche: stackoverflow.com/a/136646/333306

Risposte:


22

Non c'è differenza di prestazioni, indipendentemente da quante usingdirettive hai.

Ma penso che abbia senso tenerli puliti per due motivi:

  1. Se guardi le usings, puoi vedere quali dipendenze ha il file. Questo può aiutarti a capire cosa fanno i tipi nel file. Se lo fai, avere le usings in un ordine specifico ti aiuta a vederlo più velocemente.
  2. Se hai troppi messaggi using, potrebbe indicare che hai una scarsa separazione dei problemi e che i tipi nel file fanno troppo.

Entrambi questi non sono molto importanti, quindi non dovresti preoccuparti troppo. Ma personalmente, penso che valga la pena mantenerlo usingpulito.


8

I miei motivi principali per ripulire le dichiarazioni using sono:

  • Maggiore è il numero di istruzioni utilizzate, maggiore è la possibilità di nominare conflitti, il che significa che è necessario includere parti dello spazio dei nomi nel codice per evitare ambiguità.
  • IntelliSense viene filtrato in base a tutti gli assembly nelle istruzioni using. Pertanto, se lo ripulisci da dichiarazioni non necessarie, ti aiuterai aiutando con l'accuratezza di IntelliSense.

Inoltre, sono d'accordo con le altre risposte in quanto aumenta la leggibilità e rende più facile avere un'idea di ciò che fanno i tipi nella classe.


Non capisco perché questo non sia più votato. I conflitti nello spazio dei nomi sono un problema legittimo.
RubberDuck,

7

"La perfezione si ottiene non quando non c'è più niente da aggiungere, ma quando non c'è più nulla da togliere" - Antoine de Saint-Exupery

Ogni volta che puoi rimuovere qualcosa che non è necessario e non aggiunge comprensione, fallo (la leggibilità vale un codice extra).


Grande aforisma. Mi è piaciuta l'idea. +1;)
Saeed Neamati

4

Rimuove solo il rumore dal segnale. Meno rumore significa che è più facile ricevere il segnale, cioè capire l'intento del codice.

Come generatore di rumore, tuttavia, è piuttosto secondario.


2
  • Migliora la leggibilità del tuo codice.
  • Normalmente ha poco senso seguire questa linea guida se hai poche istruzioni usando

  • Ha più senso separare le istruzioni usando in sezioni.

Per esempio:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Se guardo la classe, allora posso vedere immediatamente che quella classe utilizza l'assemblaggio System.Web, nonché la nostra piattaforma e il nostro framework. Questo mi dà un'idea approssimativa delle sue dipendenze e complessità.

Puoi quindi fare un ulteriore passo avanti e ordinare le dichiarazioni, ma penso che renda l'utilizzo delle istruzioni meno leggibile, quindi non lo consiglierei.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.