Il metodo con il suffisso "ByXXX" (ad esempio findUserById) è ridondante?

6

A volte riesco a vedere la definizione del metodo come:

public User findUserById(int id){
}

Ma la mia giustificazione è, non è "(int id)" include già l'informazione di "ById"?

è meglio avere nomi come:

public User findUser(int id){
}

invece di avere "ById" per ripetere le informazioni già presenti?

    
posta mmmaaa 27.06.2018 - 05:17
fonte

1 risposta

10

Dipende davvero da quanti modi hai di trovare qualcosa, dagli standard di codifica per il tuo team, ecc. Vuoi distinguere tra la ricerca di un identificatore e il numero di post o qualche altro attributo intero di un User .

La mia preferenza personale è quella di distinguere tra una semplice ricerca e la ricerca con i verbi get e find . Ad esempio:

public User getUser(int id) { }
public User getUserByUsername(String username) { }

public Enumerable<User> findUsersForRole(Role role) { }

Ma questa è una preferenza personale. Il suffisso ByXXX fornisce il contesto quando leggi il codice. Può essere molto utile quando i nomi delle variabili non sono necessariamente chiamati bene, o il valore passato è hard coded.

Ciò che è più importante delle preferenze personali è che le convenzioni di denominazione hanno senso per il team che deve mantenere il codice. Nel mio esempio, ho un semplice metodo getUser(int id) per il mezzo principale di ottenere un utente. Detto questo, se mantenessi software che ha già la convenzione di utilizzare il suffisso ByXXX , mi adeguerei. Mi piacerebbe persino adattarmi all'utilizzo di findByXXX per tutto se fosse la convenzione.

    
risposta data 27.06.2018 - 05:42
fonte

Leggi altre domande sui tag