Ferramentas do usuário

Ferramentas do site


ti_publica:desenvolvimento_de_sistemas:boas_praticas

Desenvolvimento de sistemas: boas práticas

Tentei reunir aqui boas práticas que gosto de usar para programar. São dicas pessoais que alguns podem preferir não usar, mas as obtive de várias fontes e muitas são de consenso geral. Algumas dicas são genéricas, outras mais adequadas a uma ou outra linguagem. Quando comecei a escrever estava programando principalmente em python, mas também frequentemente em shell (principalmente bash) e as vezes em php. No passado já programei em C, pascal, perl, fortran e talvez alguma outra linguagem que não estou lembrando agora.

Veja também Boas práticas de programação shell

Para escrever bom código

Geral

  • Use um lint(ou linter) pra checar vários aspectos do código. Ex: Pylint (python), shellcheck (shell)
  • Criar testes automatizados
  • Não usar linhas maiores que 80 caracteres
  • Crie e use bibliotecas de funções

Variáveis

  • Dar nomes descritivos a variáveis e funções, usar sempre mesmos verbos e substantivos
  • Adotar camelCase ou snake_case para nomear variáveis e funções e manter coerência num mesmo código
  • Adotar maiúsculas para constantes
  • Não usar números diretamente, crie uma constante que diga no nome o que ele é (ex: PI, RAIO_DA_TERRA, etc)
  • Evitar variáveis globais
  • Para definir valores default pode usar a passagem de parâmetro pra função

Funções / Objetos

  • Descrever todas as funções nelas mesmas
  • Criar funções pequenas, segmentando o código
  • Eliminar flags booleanos
  • Ordem das funções de acordo com uso
  • Nomes
    • Nomes bem descritivos, como com as variáveis
    • Procurar usar sempre os mesmos verbos pras mesmas ações, não usar obter, pegar, get, … escolher um.
  • Evitar parâmetros desnecessários
  • DRY (evitar ser repetitivo)
  • Evitar efeitos colaterais
  • Evitar variáveis globais!!!! (vale repetir)

Formatação

Lembre-se que outra pessoa pode mexer no seu código mesmo que você não preveja isso inicialmente. Além disso você mesmo pode não lembrar mais o que você fez.

  • Indente sempre bem ou pode entender errado que comandos estão dentro de que estruturas. Com uma IDE isso é bem fácil
  • O uso de um lint(er) pode ajudar a identificar algumas faltas de padrão
  • Um formatador, como o black pra Python, ajuda a manter o código coerente (formatando coisas opcionais sempre da mesma forma) e legível

Testes automatizados

  • Algumas linguagens já tem frameworks prontos para adiantar esse trabalho, como o pytest para Python, shUnit2 ou cmdtest/yarn para Shell, PHPUnit etc
  • Criar funções ou classes que recebam e retornem parâmetros testáveis
  • Criar outro programa que teste, com os testes programados ou preparar trecho do programa para atuar nos testes
  • Uso de
    if __name__ == "__main__":

    no Python para diferenciar quando o script está sendo chamado diretamente e quando está sendo carregado por outro, visando não executar o programa principal se estiver sendo testado

IDE

  • Use checagem de sintaxe no VIM e auto compleção
    • vim-syntastic
    • vim-youcompleteme
    • set textwidth=80
    • set wrapmargin=8
    • set columns=80

Reuso

  • Ao criar classes/códigos reusáveis, defina a versão (no nível da classe, não da instância)
  • Ao criar número de versão no código use tipo string

ETC

Exemplo de cabeçalho padrão (python):

#!/usr/bin/python3
# -*- coding: UTF-8 -*-
#
# <Descrição> A segunda linha acima permite o uso de acentuação no arquivo
#
#
# Historico (mais recente em cima)
#       27.11.2018 - <identificação da pessoa> - Criação
#       13.12.2018 - <identificação da pessoa> - Lorem Ipsilum
#
# A Fazer
#       - Tarefa 1
#       - Tarefa 2
#               - subtarefa 2.1

Referências

ti_publica/desenvolvimento_de_sistemas/boas_praticas.txt · Última modificação: 2019/07/31 11:25 por cartola