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: Tiago Peczenyj
Subject: Re: [shell-script] Shell clean code :)
Date: Mon, 16 Jan 2012 18:06:41 -0200

2012/1/16 Reinaldo de Carvalho <address@hidden>

> **
>
>
> 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'.
>

Meninos...

Eu, pessoalmente, tento fugir do uso de variaveis de ambiente e estruturas
mais complexas em um shell script pois o shell fica com cara de programa, e
se eu quero programar posso escolher outra coisa.

Sabendo que hoje em dia o shell possui muitos built-ins interessantes eu
tento utilizar o máximo deles, evitando pipes desnecessários. As vezes um
pipe é muito custoso, mas não vou ser paranóico com isso. Porém existem
varios estilos de shell e um não é melhor do que o outro a longo prazo. Por
isto existe esta lista, trocamos ideias, experiências, conceitos, temos o
Julio que produz um conteúdo muito bom com seus livros, palestras e cursos.

Mas definitivamente não estamos aqui para trolagem, seja de que lado for.
Perceba Reinaldo que o Alysson falou bem claro "na minha opinião", ou seja,
a experiência dele diz isso. A opinião acaba quando vamos aos fatos. Eu
tenho a opinião de que quanto menos variaveis em um shell script melhor,
mas o Julio pode me mostrar que isso não é verdade.

Mas vamos nos tratar como cavalheiros ;-)



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



-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


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



reply via email to

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