[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Shell clean code :)
From: |
Reinaldo de Carvalho |
Subject: |
Re: [shell-script] Shell clean code :) |
Date: |
Mon, 16 Jan 2012 16:46:34 -0300 |
2012/1/16 Alysson Gonçalves de Azevedo <address@hidden>:
> Amigo, veja bem, tem muitas coisas no seu script que, na minha opinião, não
> se justificam. Veja bem...
>
frase troll.. considerando que há mais 'bons padrões' do que os
eventuais problemas que você citou, o oração 'muitas coisas não se
justificam' não faz sentido, porque 'muitas' no senso comum denota 'a
maioria'.
>/dev/null
>
> Todas as suas funções de validações podem ser inseridas na função usage
>
>> function usage() {
>> cleanup
>> case "$1" in
>> "ErrArgNull") echo "Error: arg should't be null";;
>> "ErrFileNE") echo "Error: $2 file should't exist";;
>> "ErrNFolder") echo "Error: $2 isn't a folder";;
>> #todos os erros aqui
>> esac
>> echo "Usage: $0"
>> echo " [ -g | --group groupId |"
>> echo " -a ... | --artifact groupId artifactId version |"
>> echo " -j | --show-jars-content |"
>> echo " -s | --sum-files |"
>> echo " -p | --extract-pom |"
>> echo " -ps | --extract-pom-and-sum-files ]"
>> exit
>> }
>>
>
> e no lugar que você valida, por exemplo
>
>> isEmptyAndExit "$1"
>> isNotFolderAndExit "$REPOPATH/$1"
>> isEmptyAndExit "$2"
>> isEmptyAndExit "$3"
>>
Feito, apesar de que dá trabalho de saber a 'chave' do texto, sendo
que a mensagem não será reaproveitada e centralizar o getText só ajuda
internacionalização, o que não será o caso.
> use
> [ -z "$1" -o -z "$2" -o -z "$3" ] && usage "ErrArgNull"
> [ ! -d "$1" ] && usage "ErrNFolder" "$TMPFOLDER"
>
Questão de estilo, pra mim isEmpty é mais claro e evita repetir a lógica.
> Na minha opinião, é sempre bom agrupar comandos repetitivos em funções,
> porque isso reduz o tamanho do script.
> Mas criar uma função de 7 linhas para fazer o que você resolve em 1 linha,
> não faz sentido nenhum.
> Nem mesmo para fins de legibilidade, por que na primeira vez que eu ver o
> código, eu não sei o que isEmptyAndExit faz, mas vou saber que [ -z "$1" ]
> && exit verifica se o parâmetro está vazio e, se sim, sai.
>
isEmptyAndExit poderia tratar varios parametros, evitando chamadas consecutivas.
> Fazendo isso que eu comentei, você reduz seu script pela metade, o que
> facilita o entendimento do script.
> Sem contar que vai usar menos memória para armazenar funções.
>
> Te mais.
>
> Alysson Gonçalves de Azevedo
> (11) 8491-7730
>
Aliás, cheguei ao final do e-mail e não vi se quer 'coisas não se
justificam' , imagina 'muitas'... Trolagem pura...
--
Reinaldo de Carvalho
http://korreio.sf.net
http://python-cyrus.sf.net
"While not fully understand a software, don't try to adapt this
software to the way you work, but rather yourself to the way the
software works" (myself)