Denominazione di classi e interfacce correlate


9

Ho creato una ObjectParserclasse che analizza i dati in oggetti fortemente tipizzati usando IObjectParserDataSourcecome origine dati (i dati potrebbero essere un file Excel, un file di testo, un array, una stringa di query, ecc.).

Esempi delle mie implementazioni di IObjectParserDataSourcesono:

  • TextFileObjectParserDataSource
  • ExcelFileObjectParserDataSource

Questi nomi di classe mi sembrano davvero lunghi e contorti per me.

Potrei nominarli:

  • TextFileDataSource
  • ExcelFileDataSource

Ma questo introduce un livello di ambiguità e non sono diventati così chiaramente correlati IObjectParserDataSourcea prima vista. Ciò diventa importante perché la definizione di queste origini dati avverrà nel codice client e desidero ridurre al minimo la potenziale confusione e incertezza.

Come definiresti queste classi in un tale scenario?


1
Non credo che i tuoi nomi attuali siano troppo lunghi e contorti.
AakashM,

Sto lanciando questa idea là fuori, ma non la consiglio: se usi molto la stessa stringa (come "ObjectParserDataSource") nella tua denominazione, sigla. ExcelFileOPDS, TextFileOPDS. Risparmia un po 'sulla digitazione e sullo spazio dello schermo, ma è opaco per qualcuno che non ha familiarità con il codice.
Bobson,

Risposte:


22

In genere cerco di aggirare questo problema incollando tutti gli oggetti simili in uno spazio dei nomi e semplificandone i nomi (se posso farlo).

Ad esempio, avrebbe

spazio dei nomi ObjectParserDataSources
|
| -> classe TextFileSource
| -> classe ExcelFileSource

Oppure, se la raccolta di oggetti che lavorano con / manutenzione ObjectParserdiventa abbastanza grande, farei un albero di cartelle o un progetto separato dedicato solo a ObjectParser:

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

All'interno di un determinato file, le istruzioni di importazione e il contesto del codice renderebbero in genere abbastanza chiaro che TextFileSourceè l' ObjectParserorigine dati. Se ci sono più classi TextFileSourcecon nomi simili nello stesso pezzo di codice, puoi fare riferimento con il suo nome completo:

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

Di solito si verifica molto raramente e non mi dispiace scrivere qualche parola in più.


1
Mi hai risparmiato il tempo di scrivere quella stessa risposta :)
Michael Brown,

1
+1. Questa soluzione migliora la leggibilità senza ridurre la chiarezza.
John Cartwright,
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.