developer-challenge
developer-challenge copied to clipboard
Pull Request - Desenvolvedor Pleno
Olá, tudo bem?! Meu nome é Felipe, moro em Cotia/SP, eu curto Java demais e me debrucei aqui no PC pra fazer algumas melhorias no código-fonte do jogo dos Oito. O Chat GPT e o @AllenHichard já haviam feito um trabalho sensacional e eu vim aqui humildemente fazer a minha singela contribuição também.
Melhorias
-
Criei a classe Movement, que implementa a interface Action, desacoplando de Cell;
-
Criei a classe GameStatus (que implementa a interface Status) desacoplando de Board;
-
Criei a classe Click (que implementa o padrão Command) desacoplando de Board;
-
Fiz uma correção ao clicar na célula vazia do jogo, que lançava a exception "NumberFormatException";
-
Usei o padrão Builder para construir o objeto do frame JogoDosOito de uma forma mais elegante no método main, e coloquei a inicialização do jogo também na classe Application;
-
Criei o método of para inicializar os objetos, deixando o construtor com argumentos privado. Aí nem vai ter tanto new, new, new espalhado pelo código (acho muito legal esse estilo de método!!);
-
Criei testes unitários com a library do AssertJ e dei uma ajeitada no pom.xml, centralizando as versões das dependências na tag properties;
-
Apliquei os princípios do SOLID, Clean Code e do DRY nas classes, métodos e variáveis;
-
Adicionei a library JTattoo para deixar a UI da jogo um pouco mais amigável;
-
Adicionei a classe JFrameCustom para personalizar o frame do jogo, por exemplo, ao iniciar a aplicação, o seu frame já está centralizado na tela;
-
Alguns métodos que tinham paradigmas funcionais, eu os reescrevi com os loops do for-each, conforme o @douglashiura mencionou lá no READ.ME, o grande @AllenHichard fez umas elegâncias com "código muito funcional" (pra mim estavam excelentes!);
-
Alguns métodos e testes que não estavam sendo utilizados no jogo, eu tomei a liberdade de deletá-los. Havia um lá que era pra pegar os valores do teclado, por exemplo, e o jogo é pra ser jogado pelo mouse.
Bom, agradeço por ter feito esse desafio, aprendi muito de verdade!
Meu contato é: [email protected] :coffee: