Home - this site is powered by TWiki(R)
Protected > DiscussionForum > DiscussionForumArticle2008x05x08x17x50
TWiki webs: Main  |  TWiki  |  Sandbox   Hello TWiki Admin Group! Log Out

Users  |  Groups  |  Offices  |  Changes  |  Index  |  Search  |  Go

Back To Overview


Design Rules x Open Modules
Posted on 08 May, 2008 by RodrigoBonifacio
Após reler o trabalho de Open Modules, fiquei com uma dúvida relacionada a linguagem de DRs. Open Modules restringe os pointcuts que podem ser referenciados por advices. Esse recurso, ao que me parece, não é suportado pela linguagem de DRs, certo? Ou os aspectos implementam obrigatoriamente uma (talvez mais que uma) DR?

Ou seja, ficaria a critério dos desenvolvedores programarem seguindo uma interface ou não, certo?


Add your comments to the Discussion
 

Resposta de Rodrigo as questões de Márcio:

> Concordas??? > o aspecto iria sim ser obrigado a implementar a DR

concordo.

mas tenho uma duvida quanto a todo aspecto implementar uma DR? No caso de open modules, aspectos podem interceptar apenas o que está público nas interfaces. Isso resolve o problema de evolução do código base quebrar os aspectos. Mas nao define a responsabilidade dos aspectos (ponto positivo da linguagem de DR). Se os aspectos puderem referenciar pointcuts nao descritos nas DRs, o problema de fragile poderia continuar existindo.

O resto eu concordo. smile
RodrigoBonifacio 08 May 2008 - 17:55

Resposta de Márcio:

Acho que se há uma DR, há um contrato a ser implementado por ambos, classe e aspecto. Assim sendo, o aspecto iria sim ser obrigado a implementar a DR, afinal acho que não faz sentido existir uma DR somente pra uma classe ou somente para um aspecto.

Eu também acredito que limitar os pointcuts não esteja na linguagem de DRs. Até onde eu entendo, ela é uma espécie de checker que verifica basicamente duas coisas:

(i) a classe expõe os pointcuts declarados na DR? (Ou seja, ela provê os métodos insert(..))???

(ii) o aspecto tem algum advice para os pointcuts declarados na DR? (Ou seja, ele introduz algum código para alterar o comportamento de insert(..))?

Em suma, acho que a linguagem não restringe, mas sim verifica se os pointcuts existentes estão sendo expostos (pela classe) e tratados (pelo aspecto).

Concordas???
RodrigoBonifacio 08 May 2008 - 17:54

Resposta de Paulo:

Eu ja conversei com alberto sobre isso, mas atualmente a linguagem
de drs nao esconde joinpoints.

e aspectos podem nao implementar drs. mas mesmo que tivessem que
implementar, isto nao daria o mesmo efeito de open modules, certo? drs
indicariam que joinpoints tem que ser visiveis nas classes, outra coisa e dizer quais nao podem ser visiveis.
RodrigoBonifacio 08 May 2008 - 17:53



Edit | Attach | Print version | History: %REVISIONS% | Backlinks | Raw View | Raw edit | More topic actions

This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback

mersin escort bayan adana escort bayan izmit escort ankara escort bursa escort