[Cascavel-pm] O código mais bizonho que eu já fiz na minha vida (v. 2.0)

Daniel Ruoso daniel em ruoso.com
Quinta Junho 17 12:47:47 CDT 2004


Em Qui, 2004-06-17 às 12:10, Luis Campos de Carvalho escreveu:
>    IMHO, isso parece muito um problema de projeto. O Oak poderia 
> suportar "pluggable parents", de forma que se você não estiver contente 
> com alguém da hierarquia, fazer override seja simplesmente uma questão 
> de alterar um ponteiro em um arquivo de configuração (simples e rápido). 
> Desta forma, você poderia simplesmente extender ou alterar o código 
> necessário ao seu projeto.
>    Obviamente, você deve ter considerado isso em algum momento durante a 
> implementação do Oak. O que aconteceu para você desistir deste tipo de 
> arquitetura?

Sim, a questão é que o Oak usa herança de forma muito intensa, fazer
este tipo de controle deixaria o projeto bastante mais complexo, e
considerando que o uso de "Customizer" é uma exceção, preferi deixar
mais simples para o uso normal...

Ah... tem outra coisa também... 

Se você usar herança para fazer isso, não tem como você interagir tanto
com o método original, quanto com a superclasse...

A1
^
|   é personalizado por
A2 - - - - - - - - - - -> A4
^
|
A3

No método definido em A4 eu posso tanto chamar o código original de A2,
quanto chamar a superclasse A1 (através do ORIG e do SUPER
respectivamente), não vejo como isso seria possível através de herança,
afinal eu não estou extendendo o comportamento de A2, eu estou
modificando.

E também, eu teria que notificar todas as subclasses de A2 de que elas
devem colocar A4 como @ISA (mesmo que manualmente) e isso eu também
queria evitar.

>    Acho que soluções que manipulam as tabelas de símbolos são bonitas, 
> mas perigosas demais. Alguém pode tentar um "cruzamento" com outra 
> manipulação da tabela de símbolos e o resultado pode ser inesperado...

Sim, mas como eu disse, esse é um caso de exceção, se o recurso for
usado ela sabe que está sendo mechido na tabela de símbolos e deverá
evitar outras manipulações (devo colocar isso na documentação!)

>    Querendo ajudar, temendo atrapalhar, putamplexos!

Não há meios para atrapalhar um projeto quando se comenta sobre ele...
:)

abraços

daniel




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