Come si chiamano le classi che svolgono lavori arbitrari nel progetto? [chiuso]

3

Lavoro su molti progetti con diversi team. Ogni progetto ha le sue convenzioni, comprese quelle che chiamano classi arbitrarie che non si prestano a nomi ovvi.

Come controcampo, di solito è abbastanza ovvio che cosa dovresti nominare i tuoi modelli (UserModel, AlbumModel, ecc.). Lo stesso vale per repository, installer, controller e viste.

Ma inevitabilmente ci sono classi che non sono così nette. Ad esempio, sto lavorando a un progetto in questo momento che ha un ForumService che effettua le seguenti operazioni:

  1. Collegati al database del forum e avvia una sessione del forum
  2. Recupera i post e i commenti del forum
  3. Crea post e commenti

All'inizio, il nome ForumService aveva senso. Ma poi leggo di più sulla programmazione orientata ai servizi e ho capito che molti sviluppatori potrebbero considerare un servizio come qualcosa di completamente diverso (come un servizio web). Quindi ora sto valutando se dovrei chiamarlo ForumProvider o solo Forum.

Il team con cui lavoro a tempo pieno mi piace nominare classi come questa "Attività" (ad esempio AuthenticationTasks, UserTasks). Abbiamo anche molti "Helpers" (ad esempio ViewHelpers) e "Utilities" (ad esempio HtmlUtilities) per classi più piccole. Alcuni sviluppatori non amano questi nomi ambigui solo perché sono ambigui.

Che cosa usi normalmente e perché? La maggior parte delle persone preferisce generalmente evitare nomi come "Helpers" e "Utilities", e c'è una buona ragione?

    
posta David Kennedy 07.12.2014 - 22:58
fonte

1 risposta

6

Assegnare nomi alle cose può essere complicato - Una buona regola è che se hai problemi a nominare chiaramente una classe / funzione, dovresti leggerla come una bandiera rossa che non hai ancora pensato all'architettura o al design e probabilmente dovrebbe smettere di scrivere fino a che non lo hai.

Per assegnare un nome al nome dell'oggetto / concetto che si sta modellando ed escludere i modelli di progettazione / i nomi non di oggetti per le classi a meno che non vi sia un motivo specifico per includerli. Alcuni esempi sono ...

  • la classe implementa semplicemente o principalmente quel modello come SomethingFactory .
  • serve una distinzione per evitare ambiguità come StringBuilder .
  • l'architettura (mvvm / mvc / mvp etc) lo usa come una convenzione come DisplayPostViewModel .

Nel caso della tua classe sembra che tu stia meglio usando qualcosa come Forum poiché questo è il concetto che stai modellando. Avresti quindi bisogno di classi per i vari oggetti di cui ha bisogno Post e Template per esempio. Potresti volere un ForumFactory per creare l'oggetto forum e creare un oggetto Dal per esso.

    
risposta data 08.12.2014 - 01:48
fonte