Pacotes e dependência cíclica

No geral, sabemos que a dependência cíclica/circular entre pacotes é ruim. De qualquer forma, me parece que a forma como muitos desenvolvedores estruturam seus pacotes favorece o surgimento da dependência cíclica. Um exemplo simplificado é uma separação de pacotes estilo mvc: xxx.model, xxx.controller, xxx.view, etc; onde o controlador possui uma referência à view e a view ao controlador. É claro, em sistemas maiores provavelmente haverá interfaces em um pacote separado que poderão acabar com essa dependência, mas isso dificilmente acontecerá em sistemas arbitrariamente pequenos.

O que vocês acham? Estruturamos nossos pacotes de forma errada ou a dependência cíclica não é um bicho de sete cabeças? Pessoalmente, acredito em um pouco de ambos. Creio que a divisão de pacotes precisa ser um pouco mais contextualizada no domínio da aplicação e um pouco menos na divisão lógica. A questão é que, isso por si só não acaba com as dependências cíclicas e pode, por sua vez, introduzir novas.

se você projetar seu sistema na forma de componentes, naturalmente estará resolvendo este problema à medida que o sistema for crescendo. mesmo usando modulos, ja vai dificultar voce definir dependencias ciclicas.
entao vai depender do porte da aplicacao, ou se voce está projetando componentes ou microservices multi-aplicacao por exemplo.
as vezes um sistema pequeno pode ser monolitico com uma simples separacao de pacotes pra efeito apenas de organizacao, que foi o que citou.

[quote=Renatols]No geral, sabemos que a dependência cíclica/circular entre pacotes é ruim. De qualquer forma, me parece que a forma como muitos desenvolvedores estruturam seus pacotes favorece o surgimento da dependência cíclica. Um exemplo simplificado é uma separação de pacotes estilo mvc: xxx.model, xxx.controller, xxx.view, etc; onde o controlador possui uma referência à view e a view ao controlador. É claro, em sistemas maiores provavelmente haverá interfaces em um pacote separado que poderão acabar com essa dependência, mas isso dificilmente acontecerá em sistemas arbitrariamente pequenos.

O que vocês acham? Estruturamos nossos pacotes de forma errada ou a dependência cíclica não é um bicho de sete cabeças? Pessoalmente, acredito em um pouco de ambos. Creio que a divisão de pacotes precisa ser um pouco mais contextualizada no domínio da aplicação e um pouco menos na divisão lógica. A questão é que, isso por si só não acaba com as dependências cíclicas e pode, por sua vez, introduzir novas.[/quote]

Você não acha estranho que um padrão tão difundido quanto o MVC tenha uma referência cíclica embutida nele? Essa referência cíclica é parte essencial do padrão ou apenas de uma implementação específca dele?

Porque a view possui referencia ao controlador? Nunca vi essa versão de MVC.