Tengo algunas clases enormes de más de 2k líneas de código (y en crecimiento) que me gustaría refactorizar si es posible, para tener un diseño más claro y limpio.
La razón por la que es tan grande se debe principalmente a que estas clases manejan un conjunto de mapas a los que la mayoría de los métodos necesitan acceder, y los métodos están muy conectados entre sí.
Daré un ejemplo muy concreto: tengo una clase llamada Serverque maneja los mensajes entrantes. Tiene métodos como joinChatroom, searchUsers, sendPrivateMessage, etc. Todos estos métodos manipular los mapas tales como users, chatrooms, servers, ...
Tal vez sería bueno si pudiera tener una clase que maneje mensajes relacionados con salas de chat, otra que maneje todo sobre usuarios, etc. pero el problema principal aquí es que necesito usar todos los mapas en la mayoría de los métodos. Es por eso que por ahora todos están atrapados en la Serverclase, ya que todos confían en estos mapas comunes y los métodos están muy conectados entre sí.
Necesitaría crear una sala de chat de clase, pero con una referencia a cada uno de los otros objetos. Una clase de usuarios nuevamente con una referencia a todos los demás objetos, etc.
Siento que estaría haciendo algo mal.