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