È una buona pratica terminare il nome di una funzione con una preposizione?

7

Ho visto esempi di metodi il cui nome termina con una preposizione applicata ai primi (e più spesso) parametri. Ma altri esempi non usano questo tipo di convenzione di denominazione. Quale pensi sia più leggibile? Ad esempio, dovrei creare un metodo come questo:

getColorFor(Player player)

o come questo?

getColor(Player player)

In questo scenario, il metodo restituirebbe un colore che rappresenta il giocatore fornito come parametro.

    
posta user3738870 20.09.2018 - 23:47
fonte

4 risposte

18

Se aggiunge un chiarimento significativo o si adatta al "ethos" ... .

.NET OrderBy() e ElementAt() potrebbe essere un buon esempio.

Personalmente, io come codice che legge praticamente come l'inglese. Ci vuole un sacco di congetture, librazioni e scavi e conoscenze arcane per leggere il codice di qualcuno quando mi dice in modo inequivocabile cosa fa.

E per quanto posso dire, Non sono l'unico che si sente in questo modo.

    
risposta data 21.09.2018 - 03:20
fonte
6

Mentre più breve è meglio, a volte la soluzione migliore per una parola breve richiede disambiguazione. Un esempio divertente:

var translator = new Translator();
var result = translator.French("sister");
//throws TargetIsMarriedException

Questo è meglio:

var translator = new Translator();
var result = translator.FrenchFor("sister");
//sets result to "soeur"

Questo è probabilmente il ragionamento alla base di alcuni esempi di nomi composti di Microsoft, ad esempio:

@html.TextBoxFor( m => m.Field );

Può essere particolarmente utile se la prima parola potrebbe essere un nome o un verbo, ad esempio:

graphics.Color(x,y);

potrebbe essere o

graphics.ColorOf(x,y);

o

graphics.SetColor(x,y);
    
risposta data 21.09.2018 - 09:45
fonte
2

Anche se sembra un'idea interessante, penso che sia eccessivo. Non l'ho mai visto usato.

Non è necessario riformulare la sintassi completa della lingua inglese in un nome, soprattutto se non aggiunge alcun valore - il nome più breve sarà perfettamente chiaro anche ai programmatori principianti.

    
risposta data 21.09.2018 - 01:36
fonte
0

Una domanda interessante.

Sono d'accordo con @Aganju che è eccessivo.

Il () da solo significa qualcosa come "with" o "by" o "nel contesto di" questi argomenti, quindi non c'è bisogno di quello nel testo dell'identificatore che nomina la funzione.

In molte lingue, se si usa l'identificatore getColor senza () , allora si riferisce alla funzione o al metodo stesso piuttosto che a una sua invocazione; per esempio, se vuoi passare la funzione stessa come parametro da qualche parte per qualcun altro da usare. Suppongo che formalmente il () significhi "applicare" gli argomenti a quella funzione. Questo è visto a volte in linguaggi orientati alla programmazione funzionale, e anche JavaScript, per esempio, ha bind e apply .

Se utilizzi OOP, potremmo vedere: player.getColor() che rende abbastanza chiaro che getColor viene eseguito da player (probabilmente in il contesto di ("con") altri argomenti, se li accetta).

Inoltre, la nozione di aggiungere una preposizione probabilmente non si adatta bene a più parametri.

Alcune, ma non tutte, le lingue offrono la denominazione degli argomenti effettivi nel sito di chiamata (dal nome del parametro formale) in modo che tu possa fare getColor(for:=player) e, con questo, potresti fornire nomi descrittivi (che potrebbero essere preposizioni o più) per più parametri.

    
risposta data 21.09.2018 - 02:22
fonte

Leggi altre domande sui tag