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: Alysson Gonçalves de Azevedo
Subject: Re: [shell-script] Shell clean code :)
Date: Mon, 16 Jan 2012 16:51:40 -0200

Amigo, veja bem, tem muitas coisas no seu script que, na minha opinião, não
se justificam. Veja bem...


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"
>
use
[ -z "$1" -o -z "$2" -o -z "$3" ] && usage "ErrArgNull"
[ ! -d "$1" ] && usage "ErrNFolder" "$TMPFOLDER"

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.

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



Em 16 de janeiro de 2012 15:51, Reinaldo de Carvalho
<address@hidden>escreveu:

> **
>
>
> Olá pessoal,
>
> fiz um script para atualizar meu repositório maven e acredito que
> sirva de exemplo de boas práticas para o uso de:
>
> - bash expansions
> - return em functions
> - while com < <(cmd)
> - if com condiçõe"s"
> - cat <<< e cat <<EOF
> - @shelldoc kkk =D
>
> http://reinaldoc.github.com/tools/repo.sh
>
> p/ visualizar no navegador:
>
>
> http://github.com/reinaldoc/reinaldoc.github.com/blob/gh-pages/tools/repo.sh
>
> Sugestões são bem vindas :)
>
> []s
>
> --
> 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)
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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