Modo corretto per nominare una classe che ha solo metodi e non campi

4

GOAL: nomina una classe che ha la responsabilità di salvare i dati nel database Android. La struttura della classe è così

ClassName {

 public void saveSync(...){
     /* implementation*/
 }

 public void auxiliaryMethod(...){
    /* implementation */
 }
}

QUESTION: quale è il modo corretto per nominare questo tipo di classe? Dovrei trovare sempre un nome o posso usare un verbo?

    
posta Maicake 17.09.2018 - 14:41
fonte

3 risposte

8

Se una classe è incapsulata correttamente è difficile dire se ha anche campi dall'esterno.

Alcune classi sono immutabili. Non puoi cambiare i loro campi una volta che i loro oggetti sono stati costruiti. Anche la tua classe è immutabile. Ma non solo non può cambiare il suo oggetto, hai solo un modo per costruirlo.

Questo non significa che devi pensare all'intera cosa come a un verbo. Può ancora essere un nome. È solo un nome che ha un solo sapore.

Quello che hai è un sacco di funzioni che si muovono insieme. Se la classe è progettata correttamente, queste funzioni hanno qualcosa a che fare l'una con l'altra. Quella singola idea unificante che li ha riuniti dovrebbe dare alla classe il suo nome. Il nome dovrebbe chiarire quali funzioni appartengono alla classe e quali funzioni no. Se le persone leggono il nome e poi sono sorpresi da ciò che trovano all'interno, allora hai un brutto nome.

    
risposta data 17.09.2018 - 15:10
fonte
3

Quando mi trovo in questa situazione, faccio un passo indietro e penso a come chiamerò i metodi. Dimentica i nomi e i verbi per un minuto. Poi gioco a vuoto e vado con quello che sembra più naturale.

  • ___________.saveSync()
  • dataManager.saveSync() ?
  • saveHelper.saveSync() ?
  • entityRepository.saveSync() ?

In alcuni casi non nomino nemmeno la classe fino a dopo che l'ho chiamata da alcuni punti. Chiamalo NewClass1234 finché non puoi vederlo richiamato nel contesto, quindi leggi il codice ad alta voce mentre provi nomi diversi.

Puoi anche mostrare il codice a un collega e chiedere suggerimenti. Cerco di ridurre la quantità di tempo in cui i colleghi si scervellano sulla mia denominazione, quindi ottenere in anticipo il feedback può essere d'aiuto.

    
risposta data 17.09.2018 - 15:41
fonte
1

La prima considerazione per me è se i dati rappresentano un concetto. In tal caso, vorrei prendere il nome del concetto e, facoltativamente, aggiungere un "DAO", come "UserDAO".

Se i dati sono un misto di qualsiasi cosa, potresti anche considerare argomenti più generici come "UtilDAO".

Fai riferimento a link

    
risposta data 17.09.2018 - 14:51
fonte

Leggi altre domande sui tag