En mi aplicación tengo un Controller
que se inició con el método principal. El controlador inicializa ganchos, conexiones de bases de datos, la interfaz de usuario, otra conexión y otras cosas. Tiene la mayor parte del estado del programa (no, no es un Singleton). En otro ejemplo, hay un controlador para el bot que maneja la interpretación y el envío de comandos. Ambos son archivos bastante grandes.¿Cómo puedo escribir un controlador sin convertirlo en un objeto de Dios?
He leído sobre los objetos de Dios, pero realmente no conozco una manera de dividirlo. Si dividí el intérprete y el despachador en el bot, se creará una horrible cadena de llamadas (algo así como getBot().getParser().getOutput().sendMessage(recipient, message)
). De manera similar, en el primer controlador, si dividía las cosas, solo tendría objetos de datos que contengan campos y algunos métodos de utilidad de alias. Dividirlos empeoraría las cosas. Y antes de asumir que es imposible de mantener, en realidad no lo es. Ni siquiera escribí el controlador Bot, pero todavía sé qué está pasando.
El problema es que la clase Bot tiene 2000 líneas de longitud (probablemente más corta si saqué los comentarios de Javadoc) y el Bot tiene aproximadamente 1000 líneas de longitud. Muchas líneas = objeto de Dios. Pero, ¿está bien para una o dos clases principales de un proyecto?
Relacionado: [Diseñar una clase de tal manera que no se convierta en un "objeto de Dios"] (http://stackoverflow.com/questions/2589703/designing-a-class-in-such-a- way-that-it-doesnt-become-a-god-object) –
@jleedev He visto eso, pero este es un problema un poco diferente. El OP que podría haber de subobjetos hechos funciona bien, ya que era todo interno. Mi caso, sin embargo, es un controlador de API de cara al público que necesita ser simple en el que no puedo hacer que ningún otro objeto haga el trabajo. – TheLQ