Coding Style - sibbr/sdm-workflows GitHub Wiki

Alinhamento

  • Use tab ao invés de espaços para identar blocos.

Os espaços sempre são visualizados como uma coluna. Já o tab pode ser personalizado de acordo com as preferências de cada programador. No vim, para mudar como o tab é visualizado altere o valor de tabstop. Exemplo: para visualizar os tabs como 4 colunas faça :set tabstop=4.

  • Pipelines devem ser divididos em múltiplas linhas. Os pipes devem vir no final da linha para evitar escapes desnecessários.
# Ao invés de:
command1 \
  | command2 \
  | command3 \
  | command4

# Faça:
comando1 |
    comando2 |
    comando3 |
    comando4
  • Comente o que faz um trecho de código mais complexo. Exemplo:
# Processing command line options
while test -n "$1"; do
    case "$1" in
        -h | --help)
            echo "$HELP_MSG"
            exit 0
        ;;
...
  • Procure limitar as linhas a 80 colunas.

  • Sempre use espaços ao redor dos operadores, como >, <, && e ||.

Variáveis

Subshell

  • Use $(...) para usar uma subshell. A forma mais antiga prejudica a legibilidade.

Opções de linha de comando

  • Opções sempre em inglês.
  • As opções devem seguir o formato GNU, com opções curtas prefixadas com - e/ou opções longas prefixadas com --. Exemplo: -u e --update.
  • Sempre implemente a opção de ajuda (-h e --help).

Comentários

  • Comentários em inglês.
  • Todo script deve trazer uma descrição sucinta do que faz no início.

Blocos de comandos

  • Use colchetes [...] no lugar do comando test em shell scripts.
# Não
test -r "$occurrences_file"

# Sim
[ -r "$occurrences_file" ]

Mensagens de erro

  • Sempre em inglês
  • Não esqueça de escrever na STDERR. Num shell script seria:
echo "$mask_file not found" 1>&2
  • Não use o código de retorno 0 se o programa terminou com erro. Zero indica sucesso. Alguns códigos de retorno:
Código Significado Exemplo
0 OK echo
1 A maioria dos erros comuns na execução echo $((1/0))
2 Erro de uso em algum 'builtin' do Shell -
126 Comando não executável (sem permissão) touch a ; ./a
127 Comando não encontrado ("command not found") echooo
128 O parâmetro para o 'exit' não é um decimal exit 1.0
128+n 128 + código do sinal que o matou kill -9 $PPID #exit 137
130 O programa interrompido com o Ctrl+C (128 + 2) -
255 Parâmetro para o 'exit' não está entre 0 e 255 exit -1
Fonte: http://aurelio.net/shell/canivete/#exitcode