Quando você começa a ler mais e mais sobre o desenvolvimento de software, você frequentemente se depara com a frase “código limpo”. Na sua forma mais pura, esse é um código que é fácil para outras pessoas lerem. É expressivo e belo, e você pode facilmente discernir sua intenção simplesmente olhando para ela .
Escrever código limpo é mais fácil dizer do que fazer.
Se você é um Arduino Introdução ao Arduino: um guia para principiantes Como começar com o Arduino: um guia para principiantes O Arduino é uma plataforma de prototipagem electrónica de código aberto baseada em hardware e software flexível e fácil de usar. É destinado a artistas, designers, amadores e qualquer pessoa interessada em criar objetos ou ambientes interativos. Leia Mais tinkerer, ou você está construindo Raspberry Pi Raspberry Pi: O Tutorial Não Oficial Raspberry Pi: O Tutorial Não Oficial Se você é um proprietário atual de Pi que quer aprender mais ou um potencial proprietário deste dispositivo de tamanho de cartão de crédito, este isn um guia que você quer perder. Leia mais aplicativos com o Python, ou você é mesmo um desenvolvedor da Web, há algumas dicas úteis a seguir que facilitarão a leitura do seu código por outras pessoas. Aqui está o que você precisa saber .
Ser consistente
Talvez a primeira e mais óbvia dica seja ser consistente no que você faz. Um bom exemplo disso é seguir os mesmos padrões ao nomear as funções O Básico Absoluto da Programação Para Iniciantes (Parte 2) Os Princípios Básicos da Programação para Iniciantes (Parte 2) Na parte 2 de nosso guia para iniciantes em programação, eu serei cobrindo o básico de funções, valores de retorno, loops e condicionais. Certifique-se de ter lido a parte 1 antes de abordar isso, onde eu expliquei o ... Leia mais e variáveis Os princípios da programação de computador 101 - Variáveis e DataTypes Os princípios básicos da programação de computadores 101 - Variáveis e DataTypes Tendo introduzido e falado um pouco sobre Programação Orientada a Objetos antes e de onde vem o seu homônimo, achei que é hora de passarmos pelos fundamentos absolutos da programação de uma maneira não específica da linguagem. Isso ... Leia Mais. Você deve escolher uma convenção de nomenclatura e continuar com ela.
Então, qual convenção de nomenclatura você deve usar?
Bem, se você está escrevendo Python para Raspberry Pi, a resposta é clara. O padrão PEP-8 (o barômetro para um código Python limpo e bom) diz que os nomes das variáveis devem estar em minúsculas, com cada palavra separada por um sublinhado. Por exemplo: gpio_input e moisture_sensor_reading .
O guia de estilo do Arduino declara implicitamente que você deve escrever suas variáveis no que é conhecido como Camel Case. Aqui, as palavras não são separadas por nada, mas a primeira letra de cada palavra é maiúscula, exceto pela primeira palavra. Por exemplo: buttonPressed e temperatureReading .
Existem, é claro, outros estilos de nomeação de variáveis. O acima é simplesmente que é recomendado pelos guias de estilo oficiais. Mas o que você escolher, certifique-se de seguir por ele e use a mesma convenção de nomenclatura em todo o seu programa.
Escrever comentários significativos
Os comentários são uma ótima maneira de explicar o que seu programa faz. Você pode indicar o que cada função faz e cada variável representa em suas próprias palavras. Isso torna mais fácil para um terceiro ler seu código, mas também torna seu código mais fácil de manter, já que, em última análise, você o entende melhor.
Mas se você não escreve seus comentários de uma maneira que seja óbvia e expressiva, então você pode não se incomodar.
Ao escrever comentários, você deve tentar explicar o porquê do código, além do como. Tente deixar a intenção bem clara e diga algo sobre o código que não pode ser dito por si. Então, ao invés de:
// atualiza a leitura
Considere escrever:
// Atualiza o número de vezes que o raio laser foi quebrado antes de twittar
Certifique-se de escrever frases completas, gramaticalmente corretas. Além disso, o padrão PEP-8 para Python diz que você deve sempre escrever seus comentários e variáveis em inglês. Isso torna mais fácil para os outros colaborarem com você, caso você decida lançar seu código como código aberto, já que o inglês é praticamente a língua franca do desenvolvimento de software.
O guia de estilo do Arduino vai ainda mais longe e diz que você deve comentar cada bloco de código, cada loop e cada declaração de variável.
Pessoalmente, acho que é um pouco extremo. Se você estiver escrevendo nomes de variáveis detalhadas e expressivas, seu código já estará sendo documentado. Dito isso, não hesite em adicionar comentários onde achar necessário. Use seu próprio bom senso.
Simplifique seu código
Quando você está aprendendo a desenvolver pela primeira vez Como aprender programação sem todo o estresse Como aprender programação sem todo o estresse Talvez você tenha decidido seguir a programação, seja para uma carreira ou apenas como um hobby. Ótimo! Mas talvez você esteja começando a se sentir sobrecarregado. Não é tão bom. Aqui está a ajuda para facilitar sua jornada. Leia mais, você é frequentemente preenchido com uma imensa onda de entusiasmo. Você lê tudo o que pode sobre o idioma, estrutura ou plataforma escolhidos. Você começa a encontrar conceitos que nunca conheceu antes e está ansioso para usá-los em seu próprio código.
Coisas como operadores ternários, que permitem condensar a lógica de uma “declaração if” como esta:
int x = 5; if ( x< 10) { y = 1; { else { y = 0; }
Em uma única linha, assim:
int x = 5; int y = (x< 10) ? 1 : 0; printf("%i\n", y);
Operadores ternários são certamente legais, e eu encorajo você a ler sobre eles. Mas quando você está escrevendo código que é fácil para os outros lerem, é melhor evitá-lo. Esse é apenas um exemplo, no entanto.
O guia de estilo do Arduino também o encoraja a evitar ponteiros, instruções #define e tipos de dados diferentes do padrão: boolean, char, byte, int, unsigned int, long, unsigned long, float, double, string, array e void. Você deve evitar tipos de dados como uint8_t, já que estes são menos usados, não explicados na documentação e não são muito concisos.
Recue e aproveite o espaço em branco
Quando se trata de escrever códigos limpos, os usuários do Python estão em vantagem, já que o interpretador padrão do Python exige que todo código seja estruturado e indentado de maneira sensata. Se você não recuar após cada declaração de função e classe e declaração condicional, seu programa simplesmente não será executado.
No Arduino, não há nada que o impeça de escrever código não estruturado e compactado. Isso, no final, é difícil de ler e difícil de manter.
Mas também não há nada que impeça você de estruturar seu código.
Primeiro, estabeleça o quanto você vai recuar. Você deve usar a tecla tab criteriosamente, já que cada editor de texto trata o código ASCII para a aba de maneira diferente, e se você estiver compartilhando seu código com outra pessoa, há uma chance de introduzir inadvertidamente inconsistências em seu recuo. Essas inconsistências podem quebrar o seu programa, especialmente se você estiver usando uma linguagem sensível ao espaço em branco como CoffeeScript CoffeeScript é JavaScript sem as dores de cabeça CoffeeScript é JavaScript sem as dores de cabeça Eu realmente nunca gostei de escrever JavaScript tanto assim. Desde o dia em que escrevi minha primeira linha, sempre me ressenti de que tudo o que eu escrevo sempre acaba parecendo um Jackson ... Read More ou Python. Este artigo do OpenSourceHacker explica mais detalhadamente por que a tecla tab deve ser evitada.
Eu costumo usar quatro espaços para cada recuo, mas o número total é com você. Apenas contanto que você seja consistente.
Você pode configurar seu IDE e editor de texto para tratar cada guia como um número definido de espaços, permitindo, no entanto, usar a tecla tab sem o risco de introduzir problemas. Se você usa o Sublime Text 2, confira a documentação oficial. Se você usar o Vim, apenas edite seu arquivo .vimrc com estas linhas. O editor do Arduino faz isso automaticamente para você e insere dois espaços sempre que você pressionar a guia.
Então, você simplesmente precisa saber onde recuar seu código. Como uma boa regra geral, você deve sempre recuar após cada declaração de função e após cada if, else, for, while, switch e case statement.
Muitos editores vêm com a capacidade de recuar blocos inteiros de código de uma só vez. Se você usar o Sublime Text 2, poderá configurar uma combinação de teclas de atalho ou de pressionamento de tecla. Caso contrário, você pode usar a combinação padrão, que (no OS X) é Cmd + [ . No editor do Arduino, você pode corrigir o recuo do arquivo automaticamente pressionando Ctrl + T no Windows e no Linux, e Cmd + T no OS X.
Depende inteiramente do seu editor, então leia o manual !
Não se repita
Um dos mantras mais importantes do bom desenvolvimento de software é não repetir a si mesmo, que muitas vezes é encurtado para DRY.
Escrever o código DRY é extremamente importante, pois garante que a lógica do seu programa seja consistente, permite que você faça uma alteração em um único lugar e o reflita globalmente, e você gasta menos tempo escrevendo a mesma coisa repetidas vezes.
A melhor maneira de permanecer DRY é com um uso liberal e generoso de funções - encapsulando uma tarefa repetida com um bloco de código que você pode chamar de novo e de novo - e garantindo que cada uma seja distinta e bem escrita.
Uma boa função é curta; o guia PEP-8 diz pouco sobre o comprimento da função, mas o Código Limpo: Um Manual de Artesanato Ágil de Bob Martin (altamente recomendado) diz que “as funções dificilmente deveriam ter 20 linhas de comprimento”. De preferência, eles seriam ainda mais curtos do que isso .
Funções também devem fazer exatamente uma coisa. Precisa de uma função que faça duas coisas? Escreva duas funções.
Essas dicas facilitam o acompanhamento do fluxo de um programa e, se necessário, depurá-lo. Há também um benefício adicional para os usuários do Arduino, que são fortemente limitados pelas limitações de armazenamento, à medida que as redundâncias são removidas. Isso resulta em programas menores.
Seja explícito
Outro mantra importante do desenvolvimento de software é “explícito é melhor que implícito” . Isso significa que seu código deve gritar o que está fazendo à primeira vista. O guia de estilo do Arduino diz que coisas assim devem ser evitadas:
if(buttonPressed){ doSomething(); }
Em vez disso, você deve deixar claro o que está acontecendo. Em vez disso, escreva algo assim:
if (buttonPressed == True){ doSomething(); }
Vá para fora e codifique (bem)
Escrever código limpo é surpreendentemente simples. Você só precisa ser consistente em tudo que faz, evitar redundâncias e ser explícito. Lembre-se, o código limpo é meramente um código legível.
Há muito material de leitura sobre esse assunto. Um ótimo ponto de partida é o tutorial do Arduino e os guias de estilo da API, seguidos pelo padrão PEP-8, se você estiver criando aplicativos Python para o Raspberry Pi. Se você estiver usando outro idioma (como Javascript no painel Tessel Construindo a Internet das Coisas, Com Tessel: O Node.js Development Board Construindo a Internet das Coisas, Com Tessel: O Node.js Development Board Tessel é uma nova geração de placa de desenvolvimento que roda inteiramente no Node.js, e depois de um Kickstarter bem-sucedido, eles agora atingiram o ponto de estar disponível para todos.Leia mais), verifique no Google um guia de estilo oficial.
Se você está procurando uma leitura mais acadêmica sobre o assunto, confira Código Limpo: Um Manual de Artesanato Ágil de Software, de Bob Martin. Eu mencionei isso anteriormente neste artigo, e é altamente recomendável. Embora use Java para ilustrar conceitos, muitas das idéias podem ser passadas para outras linguagens, como Python e C para o Arduino.
Há também algumas postagens on-line brilhantes que ilustram como escrever um código limpo, descritivo e bom. Eu recomendo que você verifique “Código limpo e de alta qualidade: um guia sobre como se tornar um programador melhor”, escrito por Arash Arabi escrevendo para butterfly.com.au, e “Os Fundamentos da Escrita Código Limpo”, de Chris Reynolds, escrevendo para webdevstudios. com.
Embora não esteja explicitamente relacionado ao código limpo, também é útil saber quais funções e bibliotecas devem ser evitadas no idioma de sua escolha. Por exemplo, se você está aprendendo PHP, você deve evitar as bibliotecas “mysql”, e se você está construindo produtos físicos com Arduino, você nunca deve usar a função Delay Função Arduino Delay, e porque você não deve usá-lo Arduino Delay Function, e por que você não deve usá-lo Embora o delay () seja útil para demonstrações básicas de como o Arduino funciona, você realmente não deveria usá-lo no mundo real. Aqui está o porquê e o que você deve usar em vez disso. Consulte Mais informação .
Lembre-se de que o código mais fácil de ler é mais fácil de manter. Além disso, se você ficar preso a alguma coisa, é mais fácil para alguém ler e ajudá-lo.
Você tem alguma dica para escrever código limpo? Eu perdi alguma coisa? Conte-me! Deixe-me um comentário abaixo, e me avise.
Créditos das Fotos: Cama Seca (Premasagar), Little TAB Key (Kai Hendry), 2015 (Wikilogia)