Per quali ragioni dovrei mantenere la sezione "using" pulita in C #?

11

Una volta mentre stavo refactoring il mio codice, sono andato su IDE alla sezione using della mia classe C # e pulito namespace inutilizzati e duplichi namespace e li ha ordinati tutti.

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

Poiché molte volte si sposta 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 usando il codice (manualmente andando sulla finestra del codice e scrivendo l'istruzione using te stesso, o tramite l'editor usando la combinazione Alt + Ctrl + F10 ), e poiché queste nuove istruzioni d'uso essere aggiunto alla fine di utilizzando la sezione , che li rende non ordinati in ordine alfabetico, e poiché il compilatore non si lamenta mai di nessuno di questi problemi, perché dovremmo preoccuparci di rendere questa sezione pulita e ordinata? Quali ragioni potremmo avere?

    
posta Saeed Neamati 22.04.2012 - 11:55
fonte

5 risposte

22

Non ci sono differenze di rendimento, a prescindere dal numero di direttive using che hai.

Ma penso che abbia senso tenerli puliti per due motivi:

  1. Se guardi il using s, puoi vedere quali dipendenze ha il file. Questo può aiutarti a capire cosa fanno i tipi nel file. Se lo fai, avere using s in un ordine specifico ti aiuta a vederlo più rapidamente.
  2. Se hai troppi using s, potrebbe indicare che hai una scarsa separazione di preoccupazioni e che il tipo (oi tipi) nel file fanno troppo.

Entrambi questi non sono molto importanti, quindi non dovresti preoccupartene troppo. Ma personalmente, penso che valga la pena mantenere il using s pulito.

    
risposta data 22.04.2012 - 12:50
fonte
8

I miei principali motivi per ripulire tra le istruzioni using sono:

  • Più sono le dichiarazioni usando più possibilità di nominare i conflitti, il che significa che devi 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 elimini dalle dichiarazioni non necessarie, ti aiuterai aiutando con la precisione di IntelliSense.

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

    
risposta data 27.04.2012 - 16:25
fonte
7

"La perfezione si ottiene non quando non c'è più nulla 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 più codice).

    
risposta data 23.04.2012 - 05:21
fonte
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 è comunque piuttosto piccolo.

    
risposta data 22.04.2012 - 23:30
fonte
2
  • Migliora la leggibilità del tuo codice.
  • Normalmente non ha senso seguire questa linea guida se hai solo poche istruzioni usando

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

Ad esempio:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Se guardo la classe, posso immediatamente vedere che la classe data sta usando l'assembly System.Web, così come 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 affermazioni, ma penso che renda le dichiarazioni meno leggibili, quindi non lo consiglierei.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
    
risposta data 23.04.2012 - 00:08
fonte

Leggi altre domande sui tag