Cyber Monday

ATÉ 40% OFF

TÁ ACABANDO!

0 dias

0 horas

0 min

0 seg

Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvidas em organização de código.

Boa noite a todos.
Estou com uma dúvida em relação a boas práticas de organização de código dentro de classe para melhor legibilidade, relacionado a:

  1. Posicionar métodos antes ou depois dos getters e setters;
  2. Organizar os getters e setters entre si.

Em relação ao primeiro item, tem alguma diferença ou recomendação entre os trechos abaixo?

public class Filme {
    private String nome;
    private int anoDeLancamento;
    private int duracaoEmMinutos;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacao;
    
    //  getters e setters no inicio da classe?
    
    // Demais métodos abaixo?
    public void exibeFichaTecnica() {
        // To do code
    }
    
    public void avalia(double nota)  {
        // To do code
    }

    public double pegaMedia() {
        // To do code
    }

}

Ou:

public class Filme {
    private String nome;
    private int anoDeLancamento;
    private int duracaoEmMinutos;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacao;
    
    
    // Demais métodos abaixo?
    public void exibeFichaTecnica() {
        // To do code
    }
    
    public void avalia(double nota)  {
        // To do code
    }

    public double pegaMedia() {
        // To do code
    }
    
    //  getters e setters no final da classe?
}

Em relação ao segundo tópico, para organização dos getters e setters, qual o mais recomendado?
Agrupados como a seguir:

    // Getters em primeiro grupo
    public String getNome() {
        return nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    // Setters em segundo grupo
    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

Ou agrupar por par de get e set para cada variável, conforme abaixo?

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

Caso a questão tenha ficado confusa, só me avisar para esclarecer.

2 respostas
solução!

Olá Leandro.
Tudo bem?
Em relação à organização do código dentro de uma classe, há algumas práticas que são mais uma questão de estilo, mas que podem contribuir para a legibilidade e manutenção do código a longo prazo. Vou responder suas duas dúvidas separadamente:
Não há uma regra rígida sobre isso, mas uma boa prática comum é colocar os métodos de negócio (como exibeFichaTecnica, avalia, pegaMedia) acima dos getters e setters.
Isso porque os métodos de negócio são mais relevantes para o comportamento da classe e, ao organizá-los primeiro, fica mais fácil para quem está lendo o código entender rapidamente o propósito da classe sem ter que passar por uma sequência de métodos acessórios (getters e setters).
Por exemplo, o código ficaria assim:

public class Filme {
    private String nome;
    private int anoDeLancamento;
    private int duracaoEmMinutos;
    private boolean incluidoNoPlano;
    private double somaDasAvaliacoes;
    private int totalDeAvaliacao;
    
    public void exibeFichaTecnica() {
        // To do code
    }
    
    public void avalia(double nota) {
        // To do code
    }

    public double pegaMedia() {
        // To do code
    }
    
    // Getters e setters abaixo
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

    // Restante dos getters e setters...
}

Se você preferir uma organização onde os getters e setters ficam mais visíveis logo no início, você também pode colocá-los logo após os atributos da classe. No entanto, muitos desenvolvedores acham que isso pode reduzir a legibilidade, já que o foco inicial acaba sendo nos detalhes da implementação dos dados e não no comportamento da classe.
Em relação a agrupar os getters e setters, o estilo mais comum é o que agrupa cada get e set juntos para cada atributo.
Esse estilo é mais intuitivo, pois fica mais claro que o método de acesso e o método de modificação pertencem ao mesmo campo de dados.
Agrupar todos os getters primeiro e depois os setters não traz grandes problemas, mas pode tornar o código um pouco mais difícil de ler se você tiver muitos campos na classe.
Exemplo de organização agrupando por par de get e set:

public class Filme {
    private String nome;
    private int anoDeLancamento;
    
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getAnoDeLancamento() {
        return anoDeLancamento;
    }

    public void setAnoDeLancamento(int anoDeLancamento) {
        this.anoDeLancamento = anoDeLancamento;
    }

    // Outros métodos...
}

Essa organização facilita a visualização de que os métodos de acesso e modificação estão juntos para cada atributo.
É uma prática que pode melhorar a legibilidade, especialmente em classes com muitos atributos.
Qualquer duvida avise ai.
Bons estudos.

Ronaldo, boa tarde!
Grato pelo apoio e esclarecimento!