Skip to content

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

Open
wants to merge 27 commits into
base: main
Choose a base branch
from

Conversation

flipChandler
Copy link

@flipChandler flipChandler commented Jul 22, 2023

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


public Vertex swapCells(Integer currentCellValue) {
for (Edge adjacent : emptyCell.getAdjacents()) {
if (adjacent.cellValueIsEqual(currentCellValue)) {
Copy link
Contributor

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

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Obrigado pelo feedback!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants