Nombrar un método "do X si es necesario"

23

¿Cuál es una buena manera de nombrar un método que verifique si se necesita hacer X y lo hace X si es necesario?

Por ejemplo, ¿cómo nombrar un método que actualiza una lista de usuarios si nuevos usuarios han iniciado sesión? UpdateListIfNeededparece demasiado largo, mientras que simple UpdateListimplica una operación posiblemente costosa e innecesaria que se realiza cada vez. EnsureListUpdatedEs una variante también.

C # tiene un bool TryXXX(args, out result)patrón (por ejemplo int.TryParse(str, out num)) para verificar si X es posible y hacerlo, pero eso es sutilmente diferente.

dbkk
fuente
1
Solo un punto de recomendación, métodos como este, aunque bien intencionados, deben crearse con precaución. En el camino, tienden a salpicar un código no relacionado con el pretexto de "por si acaso" o "agregar una llamada en X () solucionó un error, pero no estoy seguro de por qué". Si tiene la disciplina de llamar solo RefreshUserList()durante LoginUser()y LogoutUser(), y no durante, decir GetUser()(donde la lista ya debe estar actualizada), entonces, por supuesto, se aplica el siguiente consejo.
Kevin McCormick

Respuestas:

25

Tiendo a usar Ensure. Tiene el significado de asegurarse de que algo se cuide, sin embargo, eso debe hacerse. Si ya está bien, simplemente verifíquelo y listo. De lo contrario, hazlo. De cualquier manera, solo asegúrese de que se haga .

Mason Wheeler
fuente
13

Mi preferencia es UpdateList. Si no hay que hacer nada, que así sea. El gasto siempre debe minimizarse de todos modos, por lo que si se UpdateListestá haciendo más de lo necesario, algo es incorrecto en su implementación.

Básicamente es el verbo el que te dice qué debe hacer el método. CalculateXsiempre debe recalcular X. GetYsiempre debe devolver Y, pero solo hacer el trabajo de recuperarlo si es necesario. Asimismo, UpdateZsolicita una actualización de Z asumiendo que se hace de la manera más eficiente posible.

Matt S
fuente
2

Llámeme si quiere"

Cooptado de fragmentos de Haskell que he visto, prueba

UpdateListMaybe();
Mark Canlas
fuente
2
Supongo que si entendiera mejor a Haskell, esto podría tener más sentido. Corolario: si se usa en un idioma que no sea Haskell, solo lo entenderán aquellos que conozcan a Haskell.
Robert Harvey
2
Seis años después, soy un programador diferente, con un poco más de conocimiento de las cosas de Haskell. Ya no respaldo esta respuesta, jaja. Creo que mi idea en ese momento era usar la palabra "quizás" para indicar que la función maneja algún tipo de opcionalidad. Todavía lo hago a veces (p. Ej., La opción [A] => B se llama maybeToB)
Mark Canlas