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
- Use somente letras minúsculas no nome das variáveis. Maiúsculas em geral são usadas por variáveis de ambiente.
- Use nomes de variáveis em inglês.
- Variáveis entre aspas duplas sempre que possível nos shell scripts. É uma [boa prática] (http://www.javacodegeeks.com/2013/10/shell-scripting-best-practices.html) que evita erros.
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:-ue--update. - Sempre implemente a opção de ajuda (
-he--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 comandotestem 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
0se 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 |