[Cascavel-pm] evitando estruturas "switch-case" em métodos de uma classe

Nilson Santos Figueiredo Junior acid06 em gmail.com
Quinta Março 29 03:14:44 PDT 2007


On 3/29/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
>    Alceu, o nome desta técnica é "dispatch table". Eu sugeri isto
> para refactorar um if-elsif-else muito grande que o Ruoso postou
> nesta lista uns dias atrás, afirmando ser a única forma de fazer
> parse de listas de dados aproximadamente semelhantes.

Na verdade uma dispatch table seria a sugestão do Igor, não a sugestão do Eden.

>    Eu recomendo a implemetação do Edem, que toma o cuidado de
> verificar se você pode usar o método, e não permite que a classe seja
> usada de forma maliciosa. Acredito que você eventualmente precise
> sobrecarregar o UNIVERSAL::can() com uma implementação sua, caso você
> esteja usando AUTOLOAD'ing para alguma coisa.

Na verdade, as pessoas deveriam passar o mais longe possível de
modificar o UNIVERSAL::can(). Se você tem uma classe que implementa
métodos via autoloading, deve sobrecarregar o método can() *naquela
classe*.

Se foi isso que você quis dizer, me perdoe por não ter entendido direito. :-)

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm