Le classi tipo verbo sono un odore di codice? [chiuso]

0

Eseguo un sacco di elaborazione di file flat per estrarre i dati. Il file "formati" è molto particolare e ogni formato di file richiede un sacco di codice specifico per il formato. A volte, il codice di analisi deve mantenere un sacco di stato durante la lettura del file. Ho usato qualcosa come questo "modello" a volte:

parser = New FileTypeAParser(filename)
parser.ParseEnterFile
data = parser.ParsedData

Oppure, considera una classe che influenzi i grandi numeri. Per ragioni di efficienza, una volta istanziata, la classe genererebbe internamente e memorizzerà nella cache i numeri primi. Sarebbe quindi chiamato molte volte con numeri diversi come questo:

factors = factorizer.Factor(veryLargeNumber)

Domanda originale

L'adagio è I nomi delle classi dovrebbero essere nomi; i nomi dei metodi dovrebbero essere i verbi. È un odore di codice per nominare e usare le classi nel modo mostrato negli esempi? Se sì, come faccio a rifattorizzare gli esempi per deodorarli e rimuovere l'odore del codice?

Domanda riveduta

Sulla base dei commenti, ora mi rendo conto che I sto usando nomi. Dopo averci riflettuto, mi sono reso conto che la mia preoccupazione è che queste classi siano molto verbo nella sostanza e nel nome. È qualcosa di cui preoccuparsi?

    
posta poke 10.12.2013 - 04:03
fonte

1 risposta

1

Non è "verbo come", è uno stato. Se hai un processo con uno stato sufficientemente complesso, altrimenti lo inseriresti se non in una classe.

Ciò che potrebbe essere un odore del codice è una classe con metodi che devono essere chiamati in un ordine particolare. Un singolo metodo parse che restituirà i dati analizzati, è più semplice da utilizzare che non lasciare i dati nell'oggetto da raccogliere mediante una chiamata separata. Ovviamente a condizione che l'intera operazione possa essere eseguita in un unico passaggio indipendentemente dalla complessità.

In alternativa potresti avere la classe data con un metodo parseFrom(File) (che creerebbe internamente una classe parser appropriata (che sarebbe interna o interna).

    
risposta data 10.12.2013 - 08:42
fonte