Na oscon 2011 teve uma palestra do Piers Cawley sobre dynamic dispatch que nada mais era do que uma forma de vc evitar eval /try-catch pois eles são bem custosos em Perl. Basicamente vc fazia um chain desse tipo<div><br></div>

<div>try {</div><div> objeto->metodoA->metodoB->metodoC();</div><div>} catch {</div><div>  objeto->metodoD</div><div>}</div><div><br></div><div>Isto poderia ser algo assim</div><div><br></div><div>objeto->metodoA->metodoB->metodoZ();</div>

<div><br></div><div>e o metodo B sabendo que ocorreu um erro ao inves de fazer um die/throw/etc simplesmente retornava um objeto cujo metodoZ é o "tratamento" do mesmo. Algo como</div><div><br></div><div> $controller->init()->process()->show()->clean();</div>

<div><br></div><div>o show normalmente vai mostrar o resultado de process. Mas pode ser que o resultado "anormal" tambem possa ser mostrado (como em uma pagina de erro). E eu posso querer limpar algo em caso de falha -- assim o show poderia retornar um objeto falso cujo clean não faz nada em caso de sucesso.</div>

<div><br></div><div>Enfim, cada abordagem tem vantagens e desvantagens. <br><br><div class="gmail_quote">2012/6/21 Solli Honorio <span dir="ltr"><<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><ironic_mode></div><div><br></div>Caramba Marcio, <div><br></div><div>Sério mesmo que um dos motivos pelo qual um CIO escolhe Java ou .Net é pq tem um sistema de Exception que possui try{...}catch{...} ? O fato de ter uma empresa mainstream na parada não é importante ? Se for assim, como foi que o VB, o Clipper, o Fortran foi (e ainda é) escolhido pelas empresas ?</div>



<div><br></div><div>Abraços,</div><div><br></div><div>Solli Honorio</div><div><br></div><div></ironic_mode><br><br><div class="gmail_quote">Em 21 de junho de 2012 16:55, Marcio Ferreira <span dir="ltr"><<a href="mailto:marciodesouzaferreira@gmail.com" target="_blank">marciodesouzaferreira@gmail.com</a>></span> escreveu:<div>

<div class="h5"><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Esse é um dos motivos de Java, .Net dominar tanto mercado<br clear="all"><br>[]s,<br><br>Marcio Ferreira<div>@_marcioferreira</div>



<div>(11) 8567-1482   skype: marcio.ferreir4</div><div><a href="http://marciodesouzaferreira.blogspot.com/" target="_blank">marciodesouzaferreira.blogspot.com</a><br>

</div><div><div><br>
<br><br><div class="gmail_quote">2012/6/21 Daniel Mantovani <span dir="ltr"><<a href="mailto:daniel.oliveira.mantovani@gmail.com" target="_blank">daniel.oliveira.mantovani@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





Para tudo, se você deseja verificar os argumentos que seus métodos vão receber e também com performance não use uma linguagem dinâmica.<br>
<br>
"Programs written in dynamically typed languages require large suites of tests to give some assurance that simple type errors cannot occur. Test suites cannot offer complete coverage: some common tasks, such as refactoring a program to make it more modular, can introduce new type errors that a test suite may not expose."<br>






<br>
Eu usaria Haskell, por nativo proporciona que todas funções sejam avaliadas em compile time, eu odeio escrever testes. Por exemplo, toda expressão em Haskell tem um tipo declarado.<br>
<br>
Prelude> :type odd<br>
odd :: Integral a => a -> Bool<br>
<br>
A função "odd" recebe um único valor inteiro e retorna um valor booleano.<br>
<div><br>
<br>
--<br>
Software Engineer<br>
Just Another Perl Hacker<br>
Daniel Mantovani <a href="tel:%2B5511%208538-9897" value="+551185389897" target="_blank">+5511 8538-9897</a><br>
XOXO<br>
<br>
</div><div><div>On Jun 21, 2012, at 3:40 PM, Thiago Yukio Kikuchi Oliveira wrote:<br>
<br>
> 2012/6/21 Solli Honorio <<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>>:<br>
>> Ok, mas aparentemente a penalidade de desempenho não vale a pena ainda...<br>
>><br>
>> Solli Honorio<br>
><br>
> Não utilize do MooseX::Method::Signature, ele é muito lento.<br>
> Utilize o Method::Signatures pois é muito mais rápido.<br>
> Olhe a comparação dos dois:<br>
> <a href="http://www.dancygier.com/wordpress/2011/03/06/methodsignatures-blazing-fast-and-makes-me-sane/" target="_blank">http://www.dancygier.com/wordpress/2011/03/06/methodsignatures-blazing-fast-and-makes-me-sane/</a><br>






><br>
> Existe o módulo Method::Signatures::Modifiers que permite  utilizar o<br>
> MooseX::Declare com o  Method::Signatures<br>
> ao invés do MooseX::Method::Signature.<br>
><br>
><br>
> Thiago<br>
> =begin disclaimer<br>
>   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
> SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
> L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
> =end disclaimer<br>
<br>
=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
</div></div></blockquote></div><br>
</div></div><br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div></div></div><br><br clear="all"><div class="im"><div><br></div>-- <br>"o animal satisfeito dorme". - Guimarães Rosa<br>
</div></div>
<br>=begin disclaimer<br>
   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tiago B. Peczenyj<br>Linux User #405772<br><br><a href="http://pacman.blog.br">http://pacman.blog.br</a><br>
</div>