Código puro: causas e efeitos



Autor: Victor Svirsky, Desenvolvedor sênior de Python / líder de equipe, DataArt

Quantos programadores, tantas definições, o que é código limpo. Ao entrevistar, frequentemente ouço que um bom código é fácil de ler. Concordo, mas, como sugere minha experiência pessoal, essa é apenas a ponta do iceberg.

A primeira campainha que nos diz que o código não está mais limpo é um aumento no tempo de desenvolvimento de novas funcionalidades e um aumento nos escopos de regressão com a menor alteração no sistema. Isso se deve ao fato de que a dívida técnica está se acumulando, os componentes do sistema estão muito conectados e não há autoteste. Os motivos para isso podem ser:

  • Externo - como a pressão dos negócios e seu desejo de obter novas funcionalidades mais rapidamente.
  • Interno - processos de desenvolvimento mal desenvolvidos e interação dentro da equipe, falta de controle e padrões de desenvolvimento ou falta banal de competência.

Não adie o trabalho sobre a qualidade do código e da arquitetura em uma caixa longa. Durante o sprint, é importante poder separar tarefas que são de valor direto para os negócios (tarefas com nova funcionalidade) e tarefas técnicas que têm apenas um efeito indireto nos negócios. A proporção de separação depende do estado atual do projeto, do período de tempo e do número de mãos livres.

O que é código limpo?


Acontece que o código está limpo e o sistema foi projetado corretamente, uma leitura fácil do código não é suficiente. Ele deve possuir outras qualidades:

  • . . , . , , .
  • , , . , . . , . , .
  • . . . -, OWASP.
  • — , . , , . , , . , .
  • . , . , .

Para evitar uma avaliação subjetiva da qualidade de seu código, o termo "código cheira" ou "código de ações" foi introduzido em 1961. Este é um grupo de regras e recomendações que definem claramente se é hora de refatorar. O "odor" leva à deterioração do código, e os desenvolvedores devem sempre se esforçar para eliminá-lo. A necessidade de refatoração segue diretamente o cheiro do código e, evitando a causa, podemos evitar as consequências. Você pode ler mais sobre os principais sinais de que deve começar a refatorar no livro de Martin Fowler "Refatoração. Melhorando o código existente ".

Devo escrever um código limpo?


Definitivamente vale a pena! Mas nem sempre e nem em todo lugar vale a pena prestar muita atenção à limpeza.

Não se esqueça da utilidade e da vida do seu código. Por exemplo, se você se deparar com a tarefa de desenvolver um conceito - PoC (Prova de conceito) e provar que a pilha de tecnologia selecionada executa a tarefa, seu código se tornará irrelevante em uma semana ou duas. Não vale a pena o esforço para melhorar essa funcionalidade.

Há uma opinião de que não é necessário monitorar a qualidade do código ou partes do sistema que serão substituídos em breve. E isso não é verdade por várias razões. O acabamento de alta qualidade facilitará a transição ou a integração com novas peças, mais ininterruptas e mais rápidas. Certamente simplificará a vida nos casos em que várias versões do código precisam ser suportadas ao mesmo tempo. O número de erros de regressão com código limpo será muitas vezes menor. Além disso, não esqueça que não há nada mais permanente que temporário. Talvez a tarefa de melhorar essa parte do código por vários meses esteja na lista de pendências.

O que ajudará a melhorar seu código?


A maioria dos programadores sonha em escrever código de maneira rápida e bonita, para que tudo funcione perfeitamente da primeira vez. Mas nem todos conseguem tornar o código não apenas funcionando, mas compreensível. Como conseguir escrever código limpo? Existem duas maneiras - auto-organização e trabalho em equipe.



Auto-organização


Considere várias maneiras possíveis de melhorar a qualidade do código individual. Essas recomendações são adequadas para desenvolvedores em qualquer nível.


  1. , — . — . IDE ( ) , , . IDE , . — .

    . , .
  2. open source
    . , . , . !

  3. , . . . , , 10, , . .

    . -, .

  4. . . . .

    . .


  5. . . - . , .

    — , , , , .


  6. , . — .
  7. !

    , .


A maioria das tarefas é resolvida em equipe. É muito importante compartilhar a responsabilidade pela qualidade entre seus participantes. Quanto maior a equipe, mais difícil é manter o produto em boas condições. Vamos considerar várias abordagens de retenção de código nas condições acima.

  1. Revisão de código
    Este é um princípio simples para entendimento e execução. Pelo menos duas pessoas, incluindo o autor do código, verificam o código.

    Há várias coisas a considerar ao verificar seu código:

    • Uma delas é verificar se o código viola as regras do contrato de código. Esse é um processo que pode e deve ser automatizado usando analisadores estáticos no IC (integração contínua).
    • Outros são a manutenção do código e a manipulação de erros que não podem ser verificados automaticamente.
    • , , . , ?

  2. (Continuous integration)

    , .

    , :

    • . . , . , , .
    • , , .
  3. (Coding onventions)

    . , . , , .

    , , , . . , , . , . , . .

    , , . — , - .

    . , . .


  4. , . , , .

    , . , . , , .

    -. . , . . , .


  5. , , . . , .

    , :

    • ? , . , .
    • ?
    • ()?
    • ?
    • — ?

    , , . , .


  6. , . SonarQube. :



    • — . , . , .


    • , — DRY (Don’t repeat yourself).


    • . . . , .


    • , , , .


    • . , . , .

***


Erros no código são semelhantes a uma pegada de carbono. É completamente impossível escapar, e o excesso de exaustão por si só não mata a humanidade nem a natureza circundante. No entanto, reduzir o efeito negativo da permanência no planeta hoje parece uma necessidade natural. Da mesma maneira, escrever código limpo é de responsabilidade de todo desenvolvedor. Independentemente do caminho escolhido, você deve se esforçar para escrever código funcional e compreensível.

Bem, se você não pode transformar a pureza em um fetiche, dada a vida útil do nosso código e avaliando a viabilidade de outras melhorias. A principal coisa a lembrar sobre as pessoas: usuários que podem falhar até uma pequena parte do sistema desenvolvido por nós e engenheiros que precisam dar suporte a esse sistema.

All Articles