-
Notifications
You must be signed in to change notification settings - Fork 58
Pull Request - Desenvolvedor Pleno #40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
||
public Vertex swapCells(Integer currentCellValue) { | ||
for (Edge adjacent : emptyCell.getAdjacents()) { | ||
if (adjacent.cellValueIsEqual(currentCellValue)) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Boa noite.
O Jogo dos oitos tem um domínio simples, assim se trazer para o código os conceitos do jogo pode solucionar sem esses desvios primitivos.
Att
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Obrigado pelo feedback!
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 é: felip3.santos11@gmail.com ☕