que tienen una clase con dos funciones importantes:¿Cuál es la mejor práctica cuando el orden de las llamadas en clase es importante?
public class Foo {
//plenty of properties here
void DoSomeThing(){/*code to calculate results*/}
void SaveSomething(){/* code to save the results in DB*/}
}
SaveSomething()
utiliza los resultados calculados en DoSomeThing()
.
el problema es que no debemos llamar al SaveSomething()
antes de DoSomeThing()
o si eso sucede, los resultados no son verdaderos. Quiero decir que el orden de las llamadas es importante, este es un problema para mantener el código (cuando se agrega uno nuevo al equipo).
¿hay alguna forma de gestionar esto?
pienso en 3 métodos de la siguiente manera
- lanzar una excepción en
SaveSomething()
si llama antes deDoSomeThing()
tener un
bool
que se encuentra enDoSomeThing()
ySaveSomething()
cambios de código a:bool resultsAreCalculated = false; void SaveSomething(){ if (!resultsAreCalculated) { DoSomeThing(); // the resultsAreCalculated = true; is set in DoSomeThing(); // can we throw some exception? } /* code to save the results in DB*/ }
implementándolo Fluido como:
Foo x = new Foo(); x.DoSomeThing().SaveSomething();
en este caso, es importante garantizar que esto no sucede:
x.SaveSomething().DoSomeThing();
en este momento, yo uso el segundo método. ¿Hay alguna manera mejor o es suficiente?
Esto no es realmente revisión de código, ya que no está completo. Es posible que desee publicar esto en Stack Overflow, ya que es una cuestión de diseño. –
@ S.Lott sí, lo es, pero creo que no es un código completo aquí. Publiqué el código completo, como una nueva pregunta, mencionando 2 o 3 de las respuestas aquí y luego se siente más la revisión del código. Por cierto, esta pregunta es relevante para [link] (http://codereview.stackexchange.com/questions/5201/best-design-pattern-for-refactoring-a-set-of-classes-thhat-do-calculation-base -en). después de 1,5 años del primer lanzamiento cuando todos los miembros del equipo son nuevos (en este proyecto, ¡no en la programación!). –
Revisión de código es para el código completo. Después de todas las decisiones de diseño. Eso es lo que significa "revisión", significa que después de todo el trabajo se hace para crearlo. Una pregunta de diseño sigue Stack Overflow. –