Criei o código abaixo para a resolução de um problema proposto pelo curso Java: aplicando a Orientação a Objetos, porém, meu conhecimento em boas práticas ainda são bem básicos e gostaria de saber o que eu poderia melhorar neste meu código para deixa-lo mais semelhante a um profissional
package br.com.alura.modificadores.models;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
public class Aluno {
private String nome;
private List notas = new ArrayList<>();
public String getNome() {
return nome;
}
public List<BigDecimal> getNotas() {
return Collections.unmodifiableList(this.notas);
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean adicionarNota(String nota) {
BigDecimal notaCovertida = new BigDecimal(nota);
if (notaCovertida.compareTo(BigDecimal.ZERO) >= 0 && notaCovertida.compareTo(BigDecimal.TEN) <= 0) {
this.notas.add(notaCovertida);
return true;
} else {
return false;
}
}
public BigDecimal calcularMedia() {
if (notas.isEmpty()) {
return BigDecimal.ZERO;
}
BigDecimal soma = BigDecimal.ZERO;
for (BigDecimal notasUnitarias : notas) {
soma = soma.add(notasUnitarias);
}
BigDecimal tamanho = BigDecimal.valueOf(notas.size());
BigDecimal mediaFinal = soma.divide(tamanho, 2,RoundingMode.HALF_UP);
return mediaFinal;
}
}
import br.com.alura.modificadores.models.Aluno;
import java.util.Scanner;
public class Principal3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Aluno aluno1 = new Aluno();
boolean loopExterno = false;
System.out.println("Digite o nome do aluno: ");
aluno1.setNome(input.nextLine());
System.out.println("Agora adicione as notas do aluno %s".formatted(aluno1.getNome()));
System.out.println("Se desejar parar ou não adicionar nenhuma nota digite Stop");
int i = 1;
while (!loopExterno) {
System.out.println("Nota %d°".formatted(i));
String nota = input.nextLine();
if (nota.equalsIgnoreCase("stop")) {
loopExterno = true;
} else if (aluno1.adicionarNota(nota)) {
System.out.println("Nota adicionada com sucesso");
i++;
} else {
System.out.println("Valor inválido, tente novamente");
}
}
System.out.printf("%n%n");
if (aluno1.getNotas().isEmpty()) {
System.out.println("Sem notas para tirar a média");
} else {
System.out.println("A media do aluno é: " + aluno1.calcularMedia());
}
}
}