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 Server
que 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 Server
classe, 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.