1
resposta

Implementação e dúvida

Implementei o que foi ensinado na aula, só que da minha forma.

Mas possuo uma dúvida: Por que separar cada método dessa forma? Tipo, o professor Paulo criou uma Classe só para comparar outra só para exibir mensagem. É boa prática fazer dessa forma? Porque poderia fazer tudo isso em um método só.

package treino;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class OrdenacaoLinguagensProgramacao {

    public static void main(String[] args) {
        List<String> linguagens = new ArrayList<String>();
        linguagens.add("C");
        linguagens.add("C++");
        linguagens.add("C#");
        linguagens.add("Java");
        linguagens.add("Python");
        linguagens.add("JavaScript");
        linguagens.add("PHP");
        linguagens.add("TypeScript");
        linguagens.add("Swift");
        linguagens.add("Go");

        System.out.println("Lista com as linguagens de programação:");
        linguagens.forEach(linguagem -> {
            System.out.println(linguagem);
        });

        System.out.println();

        Comparador compara = new Comparador();
        Consumer<String> impressao = new Impressao();

        linguagens.sort(compara);

        System.out.println("Lista organizada por ordem crescente:");
        linguagens.forEach(impressao);
    }

}
package treino;

import java.util.Comparator;

public class Comparador implements Comparator<String> {

    @Override
    public int compare(String s1, String s2) {
        if (s1.length() < s2.length()) {
            return -1;
        } else {
            return 1;
        }
    }

}
package treino;

import java.util.function.Consumer;

public class Impressao implements Consumer<String> {

    @Override
    public void accept(String s) {
        System.out.println(s);
    }

}

O que acharam?

1 resposta

Olá Lucas, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado-o com a comunidade do fórum Alura.

Separar cada método em uma classe separada é uma prática comum em programação orientada a objetos e segue os princípios de responsabilidade única e coesão. Esses princípios sugerem que cada classe ou método deve ter uma única responsabilidade bem definida.

Ao separar os métodos em classes diferentes, estamos organizando o código de forma mais modular e tornando-o mais fácil de entender, dar manutenção e reutilizar. Cada classe terá um propósito específico e encapsula a lógica relacionada a esse propósito.

A classe Comparador por exemplo, é responsável por implementar a lógica de comparação entre strings com base no tamanho. Separar essa lógica em uma classe específica facilita a compreensão do código e permite reutilizá-la em outros contextos, caso seja necessário. Da mesma forma, a classe Impressao é responsável por definir a ação a ser executada para cada elemento da lista de strings. Ao separar isso em uma classe separada, você pode reutilizar esse consumidor em diferentes contextos sem precisar repetir o código.

Além disso, ao separar a lógica em classes distintas, você está seguindo o princípio de baixo acoplamento, o que significa que as classes são menos dependentes umas das outras. Isso facilita a manutenção do código, pois alterações em uma classe específica têm menos chances de afetar outras partes do sistema.

Para finalizar, imagine o princípio da responsabilidade única como talheres na cozinha, onde, cada talher (garfo, faca, colher) tem uma função específica. O garfo é usado para espetar alimentos, a faca para cortar e a colher para servir. Mas, poderíamos, sim, utilizar uma colher, por exemplo, para comer todo e qualquer tipo de alimento, porém, cada talher tem uma única responsabilidade, assim como as classes e funções em programação. Embora seja possível colocar todas as funcionalidades em um único método, isso pode resultar em um código mais extenso, menos legível e mais difícil de manter. A separação em classes e métodos menores e mais focados ajuda a tornar o código mais modular, flexível e de fácil entendimento.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!