AprendiNoLinux
(usa Ubuntu)
Enviado em 18/04/2012 - 11:50h
Parecia estar tudo se resolvendo na questão de retornar valores de funções. Digo, qual a forma certa em cada caso. Por favor, me corrijam se estiver falando besteira.
No livro do Aurélio (Script profissional) diz mais ou menos assim:
Quando criar uma função
-----------------------
o- Quando precisar usar o mesmo trecho de código duas vezes ou mais.
o- Quando quiser pôr em destaque um trecho de código especialista.
o- Quando precisar de recursividade.
o- Quando quiser, funções sempre ajudam.
extras: Sempre use o comando
local para proteger todas as variáveis de uma função. [ESTOU TENTANDO kkkk]
Retorno de funções
------------------
o- Funções só podem retornar números de 0 a 255, usando o comando return.
o- Funções podem retornar strings usando o comando echo.
o- Funções podem gravar variáveis globais,
MAS EVITE FAZER ISSO.
Então o trecho abaixo é POG.
$ test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
O que o livro do Aurélio NÃO DIZ
--------------------------------
o- Quando você trabalha com retorno de strings em funções, não deve ecoar dados dentro da função.
o- Se for para retornar dados de strings, procure faze-lo em array.
o- Como recuperar valores lógicos de funções.
o- Como tratar retornos lógicos de funções.
o- Se dentro de sua função possuir muitos componentes visuais (echo de várias etapas), evite fazer chamadas com retorno, ex: ret=$(myfunc "para" "oi")
o
Resumo da ópera
---------------
Hoje quem vai estar em campo não é a minha barcelusa kkkk
Seguindo as recomendações de quem já participou do tópico ou em outras discussões aqui do VOL, MINHAS conclusões. Por favor, é importante criticar o que não estiver certo. Continuar aprendendo errado e ter que mudar código porque se constrói a arquitetura errada é pior do que torcer pra time rebaixado pra segunda divisão rsrs. Você sabe que ele mais cedo ou mais tarde vai cair, só não sabe quando.
o- Dividir os procedimentos ao máximo. (Estou fazendo neste momento, versão em breve.)
o- Separar funções que precisam de retorno lógico em etapas de micro funções.
o- Investigar se preciso mesmo de chamadas de "retorno" na maioria das funções. Via de regra é porque não é genérica.
o- Funções generalizadas não podem conter qualquer variável pública. Se houver gera dependência e precisa de default.
o- Qualquer função tem que trabalhar isolada do código completo ou não deve ser convertida como tal.
o- Se a função tiver dependência de variável GLOBAL, deve ser documentada.
o- Se a função gerar alguma variável GLOBAL, deve via de regra ser lógica.
ps: Não sei se está correto. Estou chamando de variáveis lógicas aquelas que retornam 0,1,2 (ou códigos de erros).
Quem sabe por favor opinar. Quem não sabe é hora de perguntar :) NÃO LEIAM:
http://www.fpepito.org/utils/conjugue.php?verbo=opinar
Do jeito que a coisa está indo o resultado do trabalho poderá se tornar um artigo no VOL.