Nomeação de classes e interfaces relacionadas

9

Eu criei uma ObjectParserclasse que analisa dados em objetos fortemente tipados usando um IObjectParserDataSourcecomo a fonte de dados (os dados podem ser um arquivo do Excel, arquivo de texto, matriz, seqüência de caracteres de consulta, etc.).

Exemplos de minhas implementações de IObjectParserDataSourcesão:

  • TextFileObjectParserDataSource
  • ExcelFileObjectParserDataSource

Esses nomes de classe são muito longos e complicados para mim.

Eu poderia nomeá-los:

  • TextFileDataSource
  • ExcelFileDataSource

Mas isso introduz um nível de ambiguidade e eles não se tornaram tão claramente relacionados à IObjectParserDataSourceprimeira vista. Isso se torna importante porque a definição dessas fontes de dados ocorrerá no código do cliente e desejo minimizar possíveis confusões e incertezas.

Como você nomearia essas classes nesse cenário?

Dave New
fonte
11
Não acho que seus nomes atuais sejam muito longos e complicados.
precisa saber é o seguinte
Estou lançando essa idéia por aí, mas não a recomendo: se você usa a mesma string (como "ObjectParserDataSource") em sua nomeação, acrônimo. ExcelFileOPDS, TextFileOPDS. Isso economiza um pouco na digitação e no espaço da tela, mas é opaco para alguém que não está familiarizado com o código.
Bobson

Respostas:

22

Geralmente, tento contornar esse problema colocando todos os objetos semelhantes em um espaço para nome e simplificando seus nomes (se eu puder fazer isso).

Por exemplo, teria

namespace ObjectParserDataSources
|
| -> classe TextFileSource
| -> classe ExcelFileSource

Ou, se a coleção de objetos trabalhando com / service ObjectParserfor grande o suficiente, eu criaria uma árvore ou projeto de pasta separado dedicado apenas ao ObjectParser:

namespace ObjectParser
|
|-> class ObjectParser
|-> interface IObjectParserDataSource
|
|-> namespace DataSources
|   |
|   |-> class TextFileSource
|   |-> class ExcelFileSource
|
|-> other stuff...

Em qualquer arquivo, as instruções de importação e o contexto do código geralmente deixam bem claro que TextFileSourceé a ObjectParserfonte de dados. Se houver várias classes nomeadas de forma semelhante no mesmo trecho de código, você poderá consultar TextFileSourcepor seu nome completo:

var parserSource = new ObjectParser.DataSources.TextFileSource(/*...*/);

Geralmente ocorre muito raramente e não me importo de digitar mais algumas palavras.

ikh
fonte
11
Você me salvou o tempo de digitar essa mesma resposta :)
Michael Brown
11
+1. Esta solução melhora a legibilidade sem reduzir a clareza.
amigos estão dizendo sobre john