[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