Convenzione di denominazione per il metodo che può eseguire un'azione

0

Ho un metodo che controlla alcune condizioni e, se necessario, eseguirà una logica per svuotare un array di elementi 'selezionati'.

Esiste un modo standard per denominare un tale metodo?

Stavo pensando a deselectIfRequired() o è meglio dividere la logica e l'azione in modo da poterla utilizzare come:

if(shouldDeselect())
{
    deselect();
}
    
posta Des Horsley 13.04.2016 - 12:02
fonte

4 risposte

2

In una certa misura, è puramente una questione di opinione. Entrambi gli approcci avranno i loro fan e nessuno dei due è intrinsecamente sbagliato, salvo in una circostanza.

Se il codice test / azione non è atomico, non si dovrebbe utilizzare tale approccio, ovvero:

if(shouldDeselect())
{
    // could a call to shouldDeselect() ever return false here?
    deselect();
}

Quindi, ad esempio, se si verifica un file esistente prima di eliminarlo, l'approccio test / azione sopra riportato è un anti-pattern e non dovrebbe essere usato. Se non può cambiare, allora è un approccio valido.

    
risposta data 13.04.2016 - 12:41
fonte
5

Penso che vorrei che la mia funzione fosse più pertinente al lavoro / ai dati effettivi in elaborazione piuttosto che a un% di suono generico inshouldDeselect(). Questo non ti dice nulla in realtà. Forse qualcosa di più inclusivo del perché la deselezione è contrassegnata?

Ad esempio:

if(martians_have_landed())
{
    cancel_all_shore_leave();
}

Come scopriamo se i marziani hanno atterrato è un dettaglio di implementazione di cui non abbiamo bisogno di preoccuparci, solo il risultato. Allo stesso modo non abbiamo bisogno di sapere se cancellare tutte le ferie a terra comporterà la cancellazione o la deselezione di determinati record, sono i dettagli di implementazione.

    
risposta data 13.04.2016 - 21:46
fonte
2

Poiché shouldDeselect() non esegue l'azione deselezionata stessa, può essere denominata checkDeselect() , che troverei più chiara (e considero uno schema di denominazione più comune) e aggiungerei anche cosa controllare, e . g. checkDeselectUsers() .

Ma come DavidArno ha già menzionato questo è basato su opinioni come molte decisioni di denominazione, e mi aspetto che l'opinione pubblica possa colpire in qualsiasi momento ...

    
risposta data 13.04.2016 - 13:00
fonte
0

Probabilmente i client di metodo non hanno bisogno di sapere se un'azione è stata effettivamente eseguita o no. Penso che un metodo idempotente deselect() sia un vincitore qui. Potrebbe restituire true / false per indicare se ha effettivamente deselezionato qualcosa se necessario.

    
risposta data 13.04.2016 - 21:22
fonte

Leggi altre domande sui tag