| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 18:54:37
|
BiraBoy
JavaChild
![[Avatar]](/images/avatar/7050094b04fd9aa310d3d5efde279058.jpg)
Membro desde: 26/10/2006 11:52:14
Mensagens: 149
Localização: Natal
Offline
|
Vi na InfoQ um artigo intitulado: Does Dependency Injection pay off? Nesta URL.
Um comentário contido nele me foi curioso:
Jacob Proffitt wrote:The real reason that DI has become so popular lately, however, has nothing to do with orthogonality, encapsulation, or other ?purely? architectural concerns. The real reason that so many developers are using DI is to facilitate Unit Testing using mock objects. Talk around it all you want to, but this is the factor that actually convinces bright developers to prefer DI over simpler implementations.
Ou seja, o cara diz que só ficou popular pq a galera usa para fazer testes unitários.
Eu não utilizo DI embora tenha lido uma coisa ou outra a respeito. Mas gostaria de saber de vocês( e isso vai ser muito enriquecedor para mim). Para quê você usa Injeção de Dependência(Dependency Injection)?
|
There are only 10 kinds of people in the world: those who understand binary and those who don't. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 19:15:11
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Nós usamos para fazer aplicações orientadas a plugins (aqui falando mais de IoC) e testes unitários. Mas a grande questão também é... não são os testes unitários um benefício grande o suficiente para justificar a DI?
This message was edited 1 time. Last update was at 17/12/2007 19:15:36
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 19:21:19
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
Em contextos do tipo statefull isso é quase obrigatório para o programador não ficar repetindo código para pegar os beans da seção. Porém, nesse caso não é muito útil sem bijeção, ou seja, além de injetar as dependências também tem que "ejetar" (aplicar as alterações feitas sobre bean pela action).
This message was edited 2 times. Last update was at 17/12/2007 19:22:56
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 19:27:27
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
bobmoe wrote:Em contextos do tipo statefull isso é quase obrigatório para o programador não ficar repetindo código para pegar os beans da seção. Porém, nesse caso não é muito útil sem bijeção, ou seja, além de injetar as dependências também tem que "ejetar" (aplicar as alterações feitas sobre bean pela action).
Mas, nesse caso, pq outros padrões não seriam igualmente úteis. Entre eles strategy, registry ou, como cita o autor do artigo original, o provider?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 19:55:44
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
ViniGodoy wrote:
bobmoe wrote:Em contextos do tipo statefull isso é quase obrigatório para o programador não ficar repetindo código para pegar os beans da seção. Porém, nesse caso não é muito útil sem bijeção, ou seja, além de injetar as dependências também tem que "ejetar" (aplicar as alterações feitas sobre bean pela action).
Mas, nesse caso, pq outros padrões não seriam igualmente úteis. Entre eles strategy, registry ou, como cita o autor do artigo original, o provider?
No Registry acho que ainda é necessário acessar o locator para pegar a implementação, já no caso da DI isso não é necessário.
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 20:06:31
|
cmoscoso
Virtual Machine Man
Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline
|
IMO, acredito que DI pegou carona na popularidade do spring na época do embate forte com ejbs.
Mas quem pensa que para fazer testes unit´parios precisa de DI está completamente enganado, eu não estou usando DI apenas por restricoes besta do cliente, por mim usuaria..
Mas testes unitários... isso sim é indispensável.!
This message was edited 2 times. Last update was at 18/12/2007 11:27:00
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 20:15:03
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
O fato é que muita coisa tem virado "modinha" ultimamente.
Tem gente que fala "usa DI e spring" ou "usa struts e MVC" sem saber do que está falando. Só repete o que viu nos fóruns por aí e não leva em consideração trade-offs de diversas tecnologias.
Para quem não viu que tinha um link no post da URL, acho que vale a pena ler o artigo original:
http://scruffylookingcatherder.com/archive/2007/08/07/dependency-injection.aspx
Onde o autor realmente defende bem a idéia. O que achei importante nisso tudo é que ele levanta o questionamento. Até onde DI vale a pena? O quanto devemos abrir mão das práticas de projeto que a DI nos tira? E, existem soluções ainda melhores que a DI?
Essas são perguntas que um programador prudente não pode deixar de fazer. E não só para DI, como para todas as tecnologias.
Não estou dizendo que DI é ruim, nem que tem que ser abandonado. Pelo contrário, ela tem se provado uma ótima alternativa, especialmente pq os processos ágeis tem como um dos seus pilares os testes unitários.
Só venho defendendo ha um bom tempo aqui que nós devemos saber exatamente os prós e os contras de cada solução. Fabricantes de frameworks vão tentar te convencer que os paradigmas que eles adotaram são a cura para todos os seus males. E isso nunca é verdade.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/12/2007 21:59:11
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
ViniGodoy wrote:
Só venho defendendo ha um bom tempo aqui que nós devemos saber exatamente os prós e os contras de cada solução. Fabricantes de frameworks vão tentar te convencer que os paradigmas que eles adotaram são a cura para todos os seus males. E isso nunca é verdade.
Claro, concordo com você. Avaliando o exemplo que tinha dado de statefull, já ouvi casos de empresas que tem que ficar reiniciando servidor de madrugada por causa da quantidade de objetos do contexto que ficam alocados (e perdidos) em memória.
O problema é que os conceitos já vem encapsulados dentro dos frameworks, pois a indústria quer facilitar. O preço da abstração é a dificuldade de saber o que está de baixo dos panos. Por isso sempre vai existir programador e usuário.
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:48:50
|
BiraBoy
JavaChild
![[Avatar]](/images/avatar/7050094b04fd9aa310d3d5efde279058.jpg)
Membro desde: 26/10/2006 11:52:14
Mensagens: 149
Localização: Natal
Offline
|
Blz. É uma boa a discussão que vocês estão tendo. E esse é um dos meus objetivos ao abrir esse tópico. Mas gostaria que os demais usuários do guj que usam DI colocasem para que a têm usado em seus projetos.
Isso enriquecerá mais ainda o tópico (e a mim também)
|
There are only 10 kinds of people in the world: those who understand binary and those who don't. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:52:58
|
BiraBoy
JavaChild
![[Avatar]](/images/avatar/7050094b04fd9aa310d3d5efde279058.jpg)
Membro desde: 26/10/2006 11:52:14
Mensagens: 149
Localização: Natal
Offline
|
ViniGodoy wrote:Nós usamos para fazer aplicações orientadas a plugins (aqui falando mais de IoC)
O que quer dizer isso, de orientada a plugin?
|
There are only 10 kinds of people in the world: those who understand binary and those who don't. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:59:56
|
fabeen
Debugger
![[Avatar]](/images/avatar/a73d9b34d6f7c322fa3e34c633b1297d.jpg)
Membro desde: 30/06/2006 14:17:06
Mensagens: 63
Localização: São Paulo - SP - Brasil
Offline
|
Se a aplicação possuir ou necessitar de um modelo voltado a componentes acho válido a utilização de DI.
|
Do not try to imitate the old masters. Seek what they sought.
(Bosho)
http://www.keeponrightway.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 10:08:00
|
Ferryman
JavaGuru
![[Avatar]](/images/avatar/2e3907cbad887e6a1bea84d450b756db.jpg)
Membro desde: 26/10/2006 16:30:23
Mensagens: 220
Offline
|
Eai Pessoal,
Eu uso DI com o objetivo de obter um maior desacoplamento... agora o resultado disso é que ficou muito fácil pra criar mocks pros testes unitários, o que prova que código que segue as boas práticas de OO é fácil de testar .
[]s
Ferry
|
Rafael Farias Silva (@rafaferry)
Jsigner - Engenharia reversa automática através do maven. Acesse http://code.google.com/p/jsigner |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 10:09:09
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
BiraBoy wrote:
ViniGodoy wrote:Nós usamos para fazer aplicações orientadas a plugins (aqui falando mais de IoC)
O que quer dizer isso, de orientada a plugin?
Acho que ele estava se referindo a OSGI
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 10:41:12
|
rodrigoallemand
GUJ Ranger
![[Avatar]](/images/avatar/d7b431b1a0cc5f032399870ff4710743.jpg)
Membro desde: 21/02/2005 20:19:47
Mensagens: 972
Localização: Rio de Janeiro, Recreio!!!
Offline
|
fabeen wrote:Se a aplicação possuir ou necessitar de um modelo voltado a componentes acho válido a utilização de DI.
Modelo voltado a componentes? Isso me parece coisa de .NET....
|
Rodrigo Allemand
A culpa é minha e eu a coloco em quem eu quizer!. (Homer Simpson)
http://blog.rodrigoallemand.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 11:32:53
|
fabeen
Debugger
![[Avatar]](/images/avatar/a73d9b34d6f7c322fa3e34c633b1297d.jpg)
Membro desde: 30/06/2006 14:17:06
Mensagens: 63
Localização: São Paulo - SP - Brasil
Offline
|
rodrigoallemand wrote:
fabeen wrote:Se a aplicação possuir ou necessitar de um modelo voltado a componentes acho válido a utilização de DI.
Modelo voltado a componentes? Isso me parece coisa de .NET....
Componentes, Serviços, etc. Os nomes podem ser os mais variados. Mas a utilização do conceito não depende de plataforma.
http://martinfowler.com/articles/injection.html
|
Do not try to imitate the old masters. Seek what they sought.
(Bosho)
http://www.keeponrightway.com |
|
|
 |
|
|