Por que razões devo manter a seção “usando” limpa em C #?

11

Uma vez, quando refatorava meu código, subi o IDE para a seção using da minha classe C #, limpei os namespaces não utilizados e os duplicados e os classifiquei.

Meu par (programação de pares) me perguntou o motivo. Eu não tinha ideia do por que fiz isso. Eu fiz isso por meu hábito de manter todo o meu código limpo e arrumado. Quero dizer, eu disse a ele que ter um código mais limpo é uma boa idéia em geral, mas é claro que esse motivo não era uma boa justificativa, pois nem vou me preocupar em gastar meu tempo na seção de uso de qualquer página de código C #.

Como muitas vezes você move uma classe ou uma enumeração (ou um tipo em geral) de um espaço para nome para outro espaço para nome, isso adiciona novas instruções de uso ao seu código (manualmente, subindo a janela de código e escrevendo a instrução using, ou através do editor usando a combinação Alt+ Ctrl+ F10), e como essas novas instruções de uso seriam adicionadas ao final da seção de uso , o que as torna não classificadas em ordem alfabética e como o compilador nunca reclama sobre nenhum desses problemas, por que devemos fazer isso seção limpa e arrumada? Que razões podemos ter?

Saeed Neamati
fonte
5
Isso já foi solicitado e respondido no Stack Overflow - stackoverflow.com/questions/4163320/unused-using-statements (e as duas perguntas vinculadas na barra lateral) - basicamente não há motivo para se preocupar com usos não utilizados
ChrisF
Ótima referência @ChrisF, acho que recebi minha resposta lá. Talvez você deva se juntar à pergunta ou fazer algo semelhante. :)
Saeed Neamati

Respostas:

22

Não há diferença de desempenho, não importa quantas usingdiretivas você tenha.

Mas acho que faz sentido mantê-los limpos por dois motivos:

  1. Se você olhar para os usings, poderá ver quais dependências o arquivo possui. Isso pode ajudá-lo a descobrir o que os tipos no arquivo fazem. Se você fizer isso, ter os usings em uma ordem específica ajuda a vê-lo mais rapidamente.
  2. Se você tiver muitos usings, isso pode indicar que você tem uma separação fraca de preocupações e que o (s) tipo (s) no arquivo faz muito.

Ambos não são muito importantes, então você não deve se preocupar muito com isso. Mas, pessoalmente, acho que vale a pena manter as coisas usinglimpas.

svick
fonte
8

Minhas principais razões para limpar entre as instruções de uso são:

  • Quanto mais instruções de uso, maior a possibilidade de nomear conflitos, o que significa que você deve incluir partes do espaço para nome no código para evitar ambiguidade.
  • O IntelliSense é filtrado com base em todos os assemblies nas suas instruções de uso. Portanto, se você limpá-lo de declarações desnecessárias, ajudará a si mesmo ajudando na precisão do IntelliSense.

Além disso, concordo com as outras respostas, pois aumenta a legibilidade e facilita a ideia do que os tipos da classe fazem.

Fredrik Ljung
fonte
Não entendo por que isso não é mais votado. Conflitos de espaço para nome são um problema legítimo.
precisa
7

“A perfeição é alcançada não quando não há mais nada a acrescentar, mas quando não há mais nada a ser levado” - Antoine de Saint-Exupery

Sempre que você puder remover algo que não é necessário e não acrescenta entendimento, faça-o (a legibilidade vale um código extra).

jmoreno
fonte
Grande aforismo. Gostei da ideia. 1;)
Saeed Neamati
4

É apenas remover o ruído do sinal. Menos ruído significa que é mais fácil receber o sinal, ou seja, entender a intenção do código.

Como gerador de ruído, ele é bem menor.

Ian
fonte
2
  • Melhora a legibilidade do seu código.
  • Normalmente, faz pouco sentido seguir esta diretriz se você tiver apenas algumas instruções de uso

  • Faz mais sentido separar as instruções de uso em seções.

Por exemplo:

    using System.Web;

    using MyPlatform.FooX;        
    using MyPlatform.FooY;

    using MyFramework.Helpers;        
    using MyFramework.Extentions;

Se eu olhar para a classe, posso ver instantaneamente que determinada classe está usando a montagem System.Web, bem como nossa plataforma e estrutura. Isso me dá uma idéia aproximada de suas dependências e complexidade.

Você pode dar um passo adiante e ordenar as instruções, mas acho que isso torna as instruções de uso menos legíveis, por isso não recomendaria isso.

using MyFramework.Extentions;
using MyFramework.Helpers;

using System.Web;

using MyPlatform.FooX;        
using MyPlatform.FooY;
CodeART
fonte