JavaRush /Blogue Java /Random-PT /Robert Martin, Código Limpo. Resenha do livro sobre “códi...
Artem Murk
Nível 35
Днепр

Robert Martin, Código Limpo. Resenha do livro sobre “código kung fu” para desenvolvedores

Publicado no grupo Random-PT
Olá Javarashevitas! Este artigo é uma resenha do livro “Código Limpo” de Robert Martin. Juntos veremos maneiras de melhorar e otimizar seu código e, no final, uma tarefa pequena, mas interessante espera por você.
"Código Limpo" de Robert Martin.  Resenha do livro sobre “código kung fu” para desenvolvedores - 1
Todos os dias, ao abrirmos seu editor de código, nos deparamos com muitas classes, funções e variáveis. A melhor opção é se este for o seu código escrito do zero, escrito uma vez, tem poucas linhas, você está trabalhando sozinho, não há edições e nem suporte adicional do cliente. MAS! Como mostra a prática, sim, acho que você mesmo entende que isso não acontece. Basicamente, teremos que interagir de alguma forma com os membros da nossa equipe, manter o código “Hindu” e analisar os produtos em milhões de linhas. Muitas vezes ouvi respostas como esta de meus colegas de treinamento: “Esse código foi escrito por mim e não vou mostrá-lo a ninguém”, mas quando vejo solicitações de ajuda com esse código no Help, demora muito tempo (às vezes muito tempo) para me aprofundar e entender o que a pessoa queria me dizer, tenho até vontade de dizer “apague e reescreva de novo”! Valorize o tempo e a energia das pessoas que querem te ajudar, escreva corretamente e, se não souber como, nunca é tarde para aprender. O livro de Robert Martin se destaca entre os livros desse formato por conter muitos exemplos em Java. Esta pode ser uma afirmação um pouco fanática da minha parte, mas foi escrita no estilo OOP, nomeadamente na escrita de partes e secções. Fácil de entender e ler, o livro é fácil de ler em qualquer lugar ou à noite, antes de dormir. O Código Limpo é dividido em 3 partes. Na primeira parte, somos convidados a percorrer a teoria do livro, aprender sobre padrões de design e regras de boas maneiras. A segunda parte nos convida a praticar a refatoração e a escrita, e a terceira parte é o resumo final dos “cheiros” do código nos exemplos. Bem, o autor abordou muitos tópicos para os quais você precisará principalmente de conhecimento de Java Core, mas também há seções dedicadas a testes unitários JUnit, Log4j Logging, conhecimento dos padrões mais simples de design (mas como eu disse acima, não existem muitos deles, e tudo o que é incompreensível pode ser pesquisado com sucesso no Google, sim e analisado no curso JavaRush). Todos os capítulos do livro não estão relacionados entre si; você pode começar a ler com sucesso a partir do capítulo que desejar. Um breve resumo das principais ideias que retirei do livro. Eu ficaria muito grato por seus comentários sobre eles, nos quais você pode compartilhar sua própria visão dessas declarações.

1. Comentários == mal.

Na maioria dos casos, os comentários são muletas com as quais tentamos encobrir nosso código incorreto. E em alguns casos, eles também mentem sobre a finalidade dos métodos ou variáveis ​​se houver refatoração constante do código.

2. Código comentado, código morto.

Deixar esses trechos de código em seu aplicativo é equivalente a lixo. O código não utilizado se acumula com o tempo e interfere na limpeza do seu aplicativo. Verifique o código desses módulos de tempos em tempos.

3. Cabeçalhos de métodos, classes e variáveis.

Vale a pena artigos separados para discutir este tema. Não seja preguiçoso e escreva nomes que possam revelar seu propósito. Aprenda alguns padrões de ortografia de títulos. Este tópico é “must have” para estudo detalhado.

4. Cada método e variável tem seu lugar na hierarquia de classes.

Normalmente, uma classe pode ter variáveis ​​e métodos (estáticos e não estáticos), um construtor, classes internas e aninhadas e enumerações. Resumindo, há muita informação e é preciso determinar o lugar de cada um na turma. Se você olhar as classes principais do java, verá que a estrutura está claramente estruturada, podemos ver cada parte em seu lugar, claro que em seus projetos isso pode mudar dentro do projeto, mas não em cada classe. Para mim, defini a seguinte estrutura de construção: No início da classe tenho variáveis ​​estáticas, depois variáveis ​​de objeto + Enums se existirem. Após as variáveis, defino os construtores da classe. Depois escrevo métodos para trabalhar com a classe. Após os métodos, escrevo getters e setters. E no final eu tenho aulas internas. Você pode usar minha estrutura ou escrever a sua nos comentários.

5. Níveis de abstração dos métodos.

Para mim, esta foi a descoberta número 1. Cada método contém operadores em apenas um nível de abstração. Você não deve misturar operações de vários níveis.

6. Tratamento de erros.

Exceções marcadas ou não marcadas, o que é melhor usar no projeto (o que você acha?, escreva comentários)? Sou um defensor do verificado, mas o livro ajuda a olhar para as exceções não verificadas de fora. Na verdade, a exceção desmarcada não desfigura a assinatura do método, especialmente considerando que as exceções “perfuram” várias camadas ao mesmo tempo. A inconveniência da menor mudança leva à redefinição de toda a cadeia de métodos antes de capturá-la, o que em muitos casos é extremamente inconveniente para o desenvolvimento.

7. Formatação de código.

O código formatado corretamente não é apenas claro, mas também altamente legível. Você imediatamente tem uma ideia dos colchetes e das ações dentro deles. Usando o exemplo de condições nas construções if, else, você não deve escrever tudo em uma linha, é melhor mover cadeias longas.

8. Negações na condição.

Procure evitar a negação nas condições, isso é mais um fator psicológico, nosso cérebro não percebe bem a negação, e sim! antes que a expressão possa não ser percebida. Por exemplo, negar if (!condition.isTrue) é melhor reescrever o método, vai ficar muito mais fácil assim (condition.isFalse)

9. As funções devem executar uma operação.

Se o seu método executa muitas operações, divida-as em métodos de operação única. Esses métodos são muito fáceis de suportar, fáceis de testar e, se necessário, substituídos ou removidos.

10. Não se repita.

Não repita o código DRY (não se repita). Esta é uma das regras fundamentais que reduzirão significativamente o seu código, lembre-se disso. Tente colocar todos os seus trechos de código repetidos em uma função separada. Claro, podemos falar muito mais sobre DRY, KISS (Keep it simple Stupid), SOLID , YAGNI. Esses termos são essenciais para compreensão e design. Valem um artigo à parte, talvez eu volte a escrever sobre eles, já que este artigo é dedicado a uma resenha do livro “Código Limpo”.
"Código Limpo" de Robert Martin.  Resenha do livro sobre “código kung fu” para desenvolvedores - 2
Como prometido, uma tarefa pequena e fácil para você. O programa deve calcular o Índice de Obesidade com base nos dados fornecidos. Escreva nos comentários a quantidade de erros e correções no código. P.S. O código está funcionando e executa sua função se usado corretamente.
//Weight in kg.
//Height in metres.
public class sample {
    public static void main (String[] args) {
        humanIMB humanIMB = new humanIMB(80,1.52);
        System.out.println(humanIMB.Result());
    }
}
class humanIMB {
    public double W; //Weight Human
    public double H; // Height Human
    private static double imb;
    public humanIMB(double w, double h) {
        W = w;
        H = h;
        imb = W / (H * H);
    }
    public double takeW() {
        return W;
    }
    public void putW(double w) {
        W = w;
        imb = W / (H * H);
    }
    public double takeH() {
        return H;
    }
    public void putH(double h) {
        H = h;
        imb = W / (H * H);
    }
    public static double takeImt() {
        return imb;
    }
    public static String Result() {
        String  string = null;
        if (imb >=18.5 & imb <25) {
            string ="Норма, ты в форме!";
        }
        if (imb >=25 & imb <30) {
            string ="Предожирение. Эй, поосторожнее с пирожными ";
        }
        if (imb >=30) {
            string ="Ожирение. SCHWEINE! Хватит жрать, иди на треню!";
        }
        if (imb <18.5) {
            string ="Дефицит массы тела. В модели решил переквалифицироваться?";
        }
        return string;
    }
}
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION