Aninhamento de arquivos com interfaces

Mads Kristensen criou mais uma extensão para o Visual Studio. Este é denominado File Nesting e pode ser encontrado aqui .

Essencialmente, ele permite que você aninhe arquivos uns sobre os outros no explorador de soluções do Visual Studio. Isso modifica o arquivo csproj, especificando que o arquivo aninhado depende do outro arquivo. Isso é útil para aninhar arquivos relacionados, para manter o explorador de soluções livre de desordem (ou pelo menos reduzir a desordem). Os exemplos que ele usa são para aninhar arquivos JavaScript minimizados sob sua fonte não minimizada. Isso faz todo o sentido, pois normalmente você não precisa vasculhar os arquivos minimizados.

A primeira coisa que pensei ao ver essa nova extensão foi se eu poderia usá-la para aninhar implementações em sua interface. Isso pode soar como uma má ideia para você, e não consigo decidir se quero fazer isso ou não.

Como eu uso muita injeção de dependência em meu código, acabo com muitas classes de “serviço” fracamente acopladas. Cada uma dessas classes implementa uma interface, então tenho dois arquivos pr “serviço”. Normalmente gosto de agrupar esses dois arquivos em uma pasta, para mantê-los juntos no gerenciador de soluções, assim:

lista da minha estrutura de pastas de serviços

No entanto, isso apresenta alguns problemas menores:

  • Eu recebo muita desordem de pasta
  • Recebo namespaces mais complicados

Ambos os problemas são, obviamente, apenas pequenos incômodos – mas a extensão File Nesting foi criada exatamente para evitar esses pequenos incômodos.

Portanto, usando o File Nesting, posso evitar as pastas extras e, em vez disso, meu gerenciador de soluções se parece com isto:

lista de serviços aninhados recolhida

A implementação real agora está aninhada em cada uma das interfaces, portanto, se você quiser navegar até ela no gerenciador de soluções, deverá expandir a interface:

uma interface de serviço expandida

Navegar para a implementação usando o Visual Studio ou os atalhos ReSharper ainda funcionam da mesma maneira (Ctrl + T (esquema de atalho do Visual Studio) ou Ctrl + N (esquema de atalho do IntelliJ IDEA)).

O que você acha dessa abordagem? – É uma prática ruim ou você gosta da ideia de obter um explorador de soluções menor?