Como ganhar agilidade e produtividade escrevendo clean code

Publicado por Amanda Rover no dia dev

Beautiful code

Você já se viu naquela situação de estar fazendo uma tarefa e, num determinado momento, você precisa mexer em código alheio? Aposto que muitas pessoas já passaram por isso. Mesmo assim, você não desiste de entender o código. Porém, existe tanta confusão e desordem lá dentro que você acaba perdendo mais tempo tentando entender o código do que fazendo a tarefa. Para resolver esses e outros tipos de problemas, vou apresentar a vocês o Clean Code! :smile:

O que é clean code?

Podemos dizer que o código clean é aquele código elegante e bem escrito que, quando passamos o olho, conseguimos entender rapidamente o que ele quer dizer. Ao ler um código clean, sua leitura deve ser fluida como a leitura de um bom livro. Em outras palavras é um código lindo, maravilhoso, direto, simples, e focado no objetivo. É aquele código que você tem orgulho de mostrar pras outras pessoas.

Por que escrever clean code?

Acho que algumas pessoas já sentiram na pele como é estar impedido e improdutivo por conta de códigos bagunçados. Escrever clean code ajuda a organizar seu code de várias maneiras para evitar que esse tipo de coisa acabe acontecendo com você e com seus colegas de trabalho.

Um dos porquês mais importantes é a agilidade de ler um clean code. Um código clean é muito mais fácil de ser lido e não demanda muito esforço do leitor. Não é necessário ler três ou quatro vezes. Uma lida e você já está pronto para continuar a tarefa.

Além de ajudar a pessoa que precisa entender seu código, você acaba se ajudando também. Caso tire aquelas férias merecidas, quando voltar a trabalhar no seu projeto você vai separar um tempo pra entender de onde parou e o que estava fazendo. Se você escrever clean code esse tempo não será extenso. E como já dizia Robert C. Martin: -“The only way to go fast is to keep your code clean.”

Como escrever clean?

Agora você me pergunta, “como faço pra escrever desse jeito maravilhoso que só vai me trazer benefícios?”

  • Aqui você tem a liberdade de ser curto e grosso. Escrever small code do jeito mais simples possível, sem muitas palavras robustas e complexas, mas sim com palavras que definem de modo mais completo o que o método faz ou o que essa variável representa.
1
2
3
4
5
6
7
8
9
10
11
12
13
#bad code ;(
def getPayAmount()
  if is_dead? == true
  else
    if is_separated? == true
    else
      if is_retired? == true
      else
        normalPayAmount
      end
    end
  end
end
1
2
3
4
5
6
7
#good code <3
def getPayAmount()
  return 0 if is_dead?
  return 0 if is_separated?
  return 0 if is_retired?
  normalPayAmount
end
  • Métodos devem ter somente um objetivo. Um método que atende muitas ações não é um método clean. Ele deve ser focado para um objetivo apenas e deve executá-lo da forma mais eficiente.
1
2
3
def discount
    price * discount_percentage
end
  • nomes descritivos. Tente ser o mais direto possível quando escolher um nome, sem muita enrolação, sem muita palavra difícil. A ideia é que o nome atenda exatamente o que o código faz. Deve ser significativo. Uma palavra às vezes já é o suficiente, ou no caso de um método, um verbo já é suficiente. Caso não encontre uma palavra que possa ser bem descritiva podemos usar frases. Mas o ideal é encontrar um meio termo entre uma definição genérica demais e um nome extenso demais.
1
2
3
4
def calculate_salary employee
    return employee.salary * 0.8 if employee.salary > 3000
    return employee.salary * 0.9
end
  • Faça testes unitários. Além de serem auto-explicativos, escrever os testes te ajuda a pensar melhor qual o papel do seu código, como o método vai funcionar e o que você vai precisar para fazê-lo funcionar.
1
2
3
4
5
6
7
8
describe '#name' do
  context 'when is a default name' do
    context 'and locale is english' do
      ...
      it { expect(segmentation.name).to q I18n.t('segmentation_lists.default.opportunities', locale: :'en') }
    end
  end
end

A melhor maneira de saber se você escreve clean code é quando você escreve o código e dá uma pausa de algumas semanas. Ao retornar para o código, se você entender exatamente o que está escrito sem muito esforço é porque você conseguiu atingir seu objetivo!

ProTip

É muito importante a definição de nomes significativos que descrevem o que o código faz. É aí onde ganhamos a agilidade para entender o código e aumentamos em produtividade. Podemos concentrar nossas forças em atingir nossos objetivos e não perder tempo tentando entender o que o code faz.

Muitas vezes tenho mais facilidade de entender os testes do que o próprio código. Alguns testes acabam sendo mais bem escritos por causa do padrão utilizado que estimula as pessoas a descrever exatamente o que o teste faz com palavras mais claras e objetivas. Quando o teste possui blocos descritivos como o describe, context e o it - que servem como um título, subtítulo e descrição do código - acabo tendo uma legibilidade muito maior do código e consigo entender melhor todo o contexto envolvido naquele bloco.

Portanto, caso você esteja empacado no código alheio, leve essa dica em consideração :wink:

· · ·

É sempre bom validar esses fatores quando for a hora de colocar a mão na massa. Você pode até ter dificuldade no começo para poder colocar essas ideias em prática mas, lá na frente, você acaba ganhando em tempo e simplicidade.

Tem alguma dica de Clean Code? Compartilhe conosco nos comentários!

Amanda Rover

Amanda Rover

Software Trainee

Comentários