shell-script-pt
[Top][All Lists]
Advanced

[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)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]