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:-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 comandotest
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 |