Eu tenho algumas classes enormes de mais de 2k linhas de código (e em crescimento) que eu gostaria de refatorar, se possível, para ter um design mais leve e limpo.
A razão de ser tão grande é principalmente porque essas classes lidam com um conjunto de mapas que a maioria dos métodos precisa acessar, e os métodos estão muito conectados entre si.
Vou dar um exemplo muito concreto: tenho uma classe chamada Serverque lida com as mensagens recebidas. Ele tem métodos como joinChatroom, searchUsers, sendPrivateMessage, etc. Todos estes métodos manipular os mapas, como users, chatrooms, servers, ...
Talvez seria bom se eu pudesse ter uma classe lidando com mensagens relacionadas ao Chatrooms, outra tratando tudo sobre Usuários, etc. mas o principal problema aqui é que eu preciso usar todos os mapas na maioria dos métodos. É por isso que, por enquanto, eles estão todos presos na Serverclasse, pois todos confiam nesses mapas comuns e os métodos estão muito conectados um ao outro.
Eu precisaria criar uma classe Chatrooms, mas com uma referência a cada um dos outros objetos. Os usuários de uma classe novamente com uma referência a todos os outros objetos etc.
Sinto como se estivesse fazendo algo errado.