Benennen einer "do X wenn nötig" -Methode

23

Was ist ein guter Weg, um eine Methode zu benennen, die prüft, ob X ausgeführt werden muss, und ob X dies bei Bedarf tut?

Wie kann man beispielsweise eine Methode benennen, die eine Benutzerliste aktualisiert, wenn sich neue Benutzer angemeldet haben? UpdateListIfNeededscheint zu lang, während einfach UpdateListimpliziert, dass jedes Mal eine möglicherweise teure und unnötige Operation durchgeführt wird. EnsureListUpdatedist auch eine Variante.

C # hat ein bool TryXXX(args, out result)Muster (zB int.TryParse(str, out num)), um zu prüfen, ob X möglich ist und es zu tun, aber das ist subtil anders.

dbkk
quelle
1
Nur eine Empfehlung, Methoden wie diese sollten, obwohl sie gut gemeint sind, mit Vorsicht erstellt werden. Unter dem Deckmantel "Nur für den Fall" oder "Hinzufügen eines Aufrufs in X () behebt einen Fehler, aber ich bin nicht sicher, warum" werden sie in nicht verwandten Code gespickt. Wenn Sie die Disziplin haben, nur RefreshUserList()während LoginUser()und LogoutUser()nicht während GetUser()(wo die Liste bereits aktuell sein sollte) anzurufen , dann gilt auf jeden Fall der folgende Rat.
Kevin McCormick

Antworten:

25

Ich neige dazu, zu verwenden Ensure. Es hat die Bedeutung, dafür zu sorgen, dass für etwas gesorgt wird, aber das muss getan werden. Wenn es bereits in Ordnung ist, überprüfen Sie es einfach und wir sind fertig. Ansonsten mach es. So oder so, stellen Sie einfach sicher, dass es erledigt wird .

Mason Wheeler
quelle
13

Meine Präferenz ist UpdateList. Wenn nichts getan werden muss, ist es auch so. Der Aufwand sollte auf jeden Fall minimiert werden, wenn UpdateListalso mehr als nötig getan wird, stimmt etwas nicht in der Implementierung.

Grundsätzlich ist es das Verb, das Ihnen sagt, was die Methode tun soll. CalculateXsollte immer X neu berechnen. GetYsollte immer Y zurückgeben, aber nur die Arbeit des Abrufens machen, wenn nötig. Ebenso UpdateZfordert eine Aktualisierung von Z es getan , um die effizienteste Art und Weise möglich , unter der Annahme.

Matt S
quelle
2

Rufen Sie mich vielleicht an"

Aus Haskell-Ausschnitten, die ich gesehen habe, ausgewählt, versuchen Sie es

UpdateListMaybe();
Mark Canlas
quelle
2
Ich nehme an, wenn ich Haskell besser verstehe, ist das vielleicht sinnvoller. Fazit: Wenn dies in einer anderen Sprache als Haskell verwendet wird, wird es nur von denen verstanden, die Haskell kennen.
Robert Harvey
2
Sechs Jahre später bin ich ein anderer Programmierer mit etwas mehr Wissen über Haskell-Dinge. Ich stimme dieser Antwort nicht mehr zu, haha. Ich denke, meine Idee zu der Zeit war, das Wort "vielleicht" zu verwenden, um anzuzeigen, dass die Funktion eine Art von Optionalität handhabt. Ich mache das manchmal immer noch (zB Option [A] => B heißt maybeToB)
Mark Canlas