Estoy trabajando en una aplicación empresarial compleja codificada en Java impulsada por composiciones de objetos complejos. Por ejemplo: En un escenario en particular, para llevar a cabo una acción este es el flujo:¿Es una buena práctica escribir métodos que devuelvan el vacío?
login() ->
Followed by defined sequence of 10 to 20 method calls in different classes ->
Followed by a logout()
Dentro del marco, casi todas las acciones, incluyendo la conexión, desconexión, y muchos de los 10 a 20 llamadas a métodos tienen sin retorno tipos. Cualquier comportamiento erróneo es manejado por el marco. Digamos, en el inicio de sesión
public void login(){
try{
//login actions
//chained sequence of calls
}catch(){
// framework handling exceptions and other rollback options
}
}
Las acciones intermedias de 10 a 20 son llamadas a métodos sobre diferentes objetos en diferentes niveles de jerarquía del marco.
Una clase al azar se vería así:
class someobject{
def variable
void action1(){ do something on variable }
void action2(){ do something on variable }
...
}
Los cambios de variables de estado a menudo y estas acciones tienen una secuencia definida sólo por el marco que me resulta muy molesto.
Yo diría, Probablemente, si hubiera tipos de devolución apropiados en absoluto o al menos algunos de estos métodos, como en decir boolean en el caso de login()
, la vida sería mucho más fácil. Debido a esta estrecha adherencia a una serie de funciones de retorno de espacios vacíos, me resulta difícil realizar una depuración para comprender el flujo y también las pruebas unitarias se convirtieron en una pesadilla para mí.
Así que ahora, tengo la impresión de que siempre es mejor escribir funciones que devuelvan algo, especialmente cuando hay una cadena de acciones implicadas. Entonces, ¿es esto una presunción segura? Me gustaría tomar sus opiniones sobre esto. Corrígeme si estoy equivocado.
Lo que explique aquí parece que le falta un diseño adecuado de componentes. El enfoque dará como resultado un 'código de spagetti' irrecuperable. Puede que necesites introducir algunas capas intermedias ... – home