Denominare un metodo "do X se necessario"


23

Qual è un buon modo per nominare un metodo che controlla se X deve essere fatto e X se necessario?

Ad esempio, come nominare un metodo che aggiorna un elenco utenti se i nuovi utenti hanno effettuato l'accesso? UpdateListIfNeededsembra troppo lungo, mentre semplice UpdateListimplica un'operazione che può essere costosa e non necessaria ogni volta. EnsureListUpdatedè anche una variante.

C # ha un bool TryXXX(args, out result)modello (ad esempio int.TryParse(str, out num)) per verificare se X è possibile e farlo, ma è leggermente diverso.


1
Solo un punto di raccomandazione, metodi come questo, sebbene ben intenzionati, dovrebbero essere creati con cautela. Lungo la strada tendono ad essere condotti in codice non correlato con il pretesto di "solo nel caso" o "aggiungendo una chiamata in X () risolto un bug, ma non sono sicuro del perché". Se hai la disciplina di chiamare solo RefreshUserList()durante LoginUser()e LogoutUser(), non durante, dire GetUser()(dove l'elenco dovrebbe essere già aggiornato), allora si applica sicuramente il consiglio di seguito.
Kevin McCormick,

Risposte:


25

Tendo a usare Ensure. Ha il significato di assicurarsi che qualcosa sia curato, tuttavia ciò deve essere fatto. Se va già bene, basta controllarlo e il gioco è fatto. Altrimenti, fallo. Ad ogni modo, assicurati solo che sia fatto .


13

La mia preferenza è UpdateList. Se non è necessario fare nulla, così sia. La spesa dovrebbe sempre essere minimizzata comunque, quindi se UpdateListsta facendo più del necessario qualcosa non è corretto nella sua attuazione.

Fondamentalmente è il verbo che ti dice cosa dovrebbe fare il metodo. CalculateXdovrebbe sempre ricalcolare X. GetYdovrebbe sempre restituire Y, ma fare il lavoro di recuperarlo solo se necessario. Allo stesso modo, UpdateZrichiede un aggiornamento di Z supponendo che sia stato eseguito nel modo più efficiente possibile.


2

Chiamami magari"

Cooptato dai frammenti di Haskell che ho visto, prova

UpdateListMaybe();

2
Suppongo che se avessi capito meglio Haskell, questo avrebbe avuto più senso. Corollario: se questo è usato in una lingua diversa da Haskell, sarà compreso solo da coloro che conoscono Haskell.
Robert Harvey,

2
Sei anni dopo, sono un programmatore diverso, con una conoscenza leggermente maggiore delle cose di Haskell. Non approvo più questa risposta, ahah. Immagino che la mia idea all'epoca fosse quella di usare la parola "forse" per indicare che la funzione gestisce una sorta di opzionalità. Lo faccio ancora a volte (ad esempio, l'opzione [A] => B è chiamata forseToB)
Mark Canlas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.