--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Concordo Vinicius, as vezes estamos tão focados em garantir a SRP e nem percebemos que estamos entupindo nossos objetos de bugigangas tecnologicas desnecessárias.
Não vejo o SL como o lado negro da força, ele apenas tem um custo, que é até aceitável para a utilidade que ele oferece. Temos atualmente dentro do próprio .NET Framework inumeros SL, Eu normalmente utilizo uma mistura dos 3 tipos de DI, de acordo com a necessidade do objeto. Pedro, não diria que você teria problemas de testabilidade, porém fica nítido que uma aplicação que passa TODAS suas dependencias por constructor que tem algo errado pois pode aparecer bizarrices, de exisitr um objeto com 15 metodos, com 15 argumentos no construtor só porque cada metodo usa uma dependencia diferente. Atenciosamente Sidney Lima Filho Vivina Softhouse (0xx21) 7867-2321 55*10*68934 BLOG: http://blog.vivina.com.br | http://twitter.com/vivina |
Claro que objeto pode ser dividido, mas a sensibilidade do desenvolvedor para identificar que o objeto está com mais de uma responsabilidade é a mesma que faz ter vontade de desacoplar algo. Sem dúvida, nesse caso qualquer solução seria varrer para debaixo do tapete, porém não podemos esquecer de que quem está fazendo nunca acha que seu codigo é smell, só vai achar depois de algum tempo passado quando ele reavalia com outro raciocínio. Para não dizerem que não citei o Fowler também! Eu trabalho com dois projetos em ASP.NET WebForm que literalmente sustentam a empresa, eu adoraria mudar tudo para MVC, porém tenho muito código legado, atualmente estou ainda implantando a cultura de TDD aqui na empresa para aumentar minha segurança de migrar aos poucos, porém ainda tenho muitas coisas bizarras siamesas de tão acopladas que estão. Na minha situação é Constructor Injection em tudo que posso e SL quando necessário, no meu caso geralmente é na interface. |
Atenciosamente Sidney Lima Filho Vivina Softhouse (0xx21) 7867-2321 55*10*68934 BLOG: http://blog.vivina.com.br | http://twitter.com/vivina |
Sidney, nesse caso a quantidade de dependências no construtor é mais um smell de bad design do objeto em si. Talvez esse objeto esteja fazendo coisas demais e possa ser dividido, não?Usar SL ou Property Injection nesse caso seria varrer a sujeira pra debaixo do tapete.
- Pedro Reys
2010/12/2 Sidney Lima Filho <sidney...@vivina.com.br>
2010/12/2 Vinicius Quaiato <vinicius...@gmail.com>
Vou dar meu pitaco baseado na minha experiencia com Java. Eu vou na
linha do Henry, e hoje ja nao considero SL uma forma de IoC.
O Vinicius fez um bom ponto: no final o container vai ficar com algum
tipo d SL interno. O service locator, assim como qualquer outro dos
patterns hoje considerados mais antipatterns (uso de static excessivo,
singletons e ate mesmo factories que agem mais como locators), vao
aparecer bem internamente, e é importante que eles estejam
escondidissimos e acessados por poucos. é por isso que delegamos essa
tarefa para dentro de um container, seja ele castle, ninject,
spring.net ou o que for.
Os containers antigos, como o spring, no comeco so permitiam setter
injection e recomendavam voce usar seu contexto/container como um
factory/locator. hoje em dia na documentacao podemos ver que a
recomendacao mudou drasticamente, e a injecao por construtor é de
longe a mais recomendada. é a base do principio do good citzen.
As especificacoes java tambem passaram por esse caminho: EJB 2 era
tudo por locators e factories (chamadas HOME), no EJB3 passou para
setter/atributo, e no ejb 3.1, junto com o CDI, finalmente foram para
o lado da injecao via construtor.
Mas, considerando ou nao SL uma forma de IoC (discussao que pode virar
bikeshedding), nao ha como compara-la em questao de acomplamento com
DI: DI da um grau de flexibilidade e desacoplamento _muito_ superior a
SL.
abracos
--
Paulo Silveira
Caelum | Ensino e Inovação
www.caelum.com.br
2010/12/1 Henry Conceição <henry.c...@gmail.com>:
No geral dependências do tipo adjustments possuem valores default, e você pode alterá-las se convier, não existem checagens...
> ...
>
> read more »
> ...
>
> read more »
Vinicius,
Agora entendi pq vc defende SL como forma de IoC. Imho, o que vc chama
de IoC e na verdade o famigerado DI que o Martin Fowler inventou qdo
ao tentar entender IoC, olhou apenas os containers. O principio do IoC
é muito maior do q vc escreveu no seu post.
Aqui segue a melhor explicação sobre o conceito q eu ja vi:
http://www.betaversion.org/~stefano/linotype/news/38/
On Dec 3, 8:21 am, Vinicius Quaiato <vinicius.quai...@gmail.com>
wrote:
> Para apimentar escrevi um texto sobre:> Nem só de constructor injection vive o IoC:http://viniciusquaiato.com/blog/nem-so-de-constructor-injection-vive-...
>
> 2010/12/3 Paulo Silveira - Caelum <paulo.silve...@caelum.com.br>
> > 2010/12/1 Henry Conceição <henry.concei...@gmail.com>:>
> > Oi pessoal
>
> > Vou dar meu pitaco baseado na minha experiencia com Java. Eu vou na
> > linha do Henry, e hoje ja nao considero SL uma forma de IoC.
>
> > O Vinicius fez um bom ponto: no final o container vai ficar com algum
> > tipo d SL interno. O service locator, assim como qualquer outro dos
> > patterns hoje considerados mais antipatterns (uso de static excessivo,
> > singletons e ate mesmo factories que agem mais como locators), vao
> > aparecer bem internamente, e é importante que eles estejam
> > escondidissimos e acessados por poucos. é por isso que delegamos essa
> > tarefa para dentro de um container, seja ele castle, ninject,
> > spring.net ou o que for.
>
> > Os containers antigos, como o spring, no comeco so permitiam setter
> > injection e recomendavam voce usar seu contexto/container como um
> > factory/locator. hoje em dia na documentacao podemos ver que a
> > recomendacao mudou drasticamente, e a injecao por construtor é de
> > longe a mais recomendada. é a base do principio do good citzen.
>
> > As especificacoes java tambem passaram por esse caminho: EJB 2 era
> > tudo por locators e factories (chamadas HOME), no EJB3 passou para
> > setter/atributo, e no ejb 3.1, junto com o CDI, finalmente foram para
> > o lado da injecao via construtor.
>
> > Mas, considerando ou nao SL uma forma de IoC (discussao que pode virar
> > bikeshedding), nao ha como compara-la em questao de acomplamento com
> > DI: DI da um grau de flexibilidade e desacoplamento _muito_ superior a
> > SL.
>
> > abracos
>
> > --
> > Paulo Silveira
> > Caelum | Ensino e Inovação
> >www.caelum.com.br
>
> > > Entendo a situaçao, mas isso imo nao muda o status do SL como sendo um
> > > falha de design e/ou anti-pattern. É usar uma gambiarra (SL) pra
> > > amenizar outra (WebForms).
>
> > > On Dec 1, 3:19 pm, Vinicius Quaiato <vinicius.quai...@gmail.com>
> > > wrote:
> > >> Nem tudo é tão simples. Se você já tem aplicações e precisa manter, não
> > >> existe mágica cara.
> > >> Nem sempre dá pra migrar, e nesses casos SL é uma solução sim.
>
> > >> Não gosto de WebForms e não uso, mas existem casos onde não é viável
> > usar
> > >> outra coisa. Como disse o Tucaz outro dia: Tenho projetos que faturam
> > >> milhões e não posso simplesmente mudar de tecnologia.
>
> > >> E como eu disse em algumas palestras sobre MVC que dei: Talvez o único
> > >> motivo aceitável para não usar MVC seja quando você já possui algo em
> > >> WebForms.
>
> > >> 2010/12/1 Henry Conceição <henry.concei...@gmail.com>
>
> > >> > Sim, eu sei que IoC e Di sao diferentes.
>
> > >> > E infeliz é quem usa WebForms e precisa estuprar o design e violar
> > >> > estes principios. E alem disso, so prova o meu ponto q se vc precisar
> > >> > de ServiceLocator, vc falhou. Seja na escolha de algum framework (ex:
> > >> > WebForms) ou no seu design.
>
> > >> > On Dec 1, 3:02 pm, Vinicius Quaiato <vinicius.quai...@gmail.com>
> > >> > > > > > On Nov 30, 4:54 pm, "Thiago C. Santos" <
> > >> > thiago.csantos...@gmail.com>
> > >> > > > > > wrote:
> > >> > > > > > > Então, o Unity esta me interessando bastante!
>
> > >> > > > > > > Estou implementando com Ioc/Service Locator.
>
> > >> > > > > > > Thiago C. Santos
>
> > >> > > > > > > 2010/11/30 Lucas <lucassimoesmais...@gmail.com>
>
> > >> > > > > > > > Cara não sei se é incorreto, mas estou usando e funciona
> > bem.
> > >> > > > Existe o
> > >> > > > > > > > Unity tb, porém não tenho experiência com ele.
>
> > >> > > > > > > > abs
>
> > >> > > > > > > > lucas
>
> > >> > > > > > > > On 30 nov, 14:06, "Thiago C. Santos" <
> > >> > thiago.csantos...@gmail.com>
> > >> > > > > > > > wrote:
> > >> > > > > > > > > Vi uma discussão aqui sobre o MEF, e pergunto... é
> > incorreto
> > >> > usar
> > >> > > > o
> > >> > > > > > MEF
> > >> > > > > > > > como
> > >> > > > > > > > > um Ioc/DI?
>
> > >> > > > > > > > > Thiago C. Santos
>
> > >> > > > > > > > --
> > >> > > > > > > > Você recebeu esta mensagem porque faz parte do grupo .Net
> > >> > > > Architects
> > >> > > > > > > > hospedado no Google Groups.
> > >> > > > > > > > Para postar envie uma mensagem para
> > >> > > > dotnetar...@googlegroups.com
> > >> > > > > > > > Para sair do grupo envie uma mensagem para
> > >> > > > > > > > dotnetarchitec...@googlegroups.com<dotnetarchitects%2Bunsu...@googlegroups.com>
> > <dotnetarchitects%2Bunsu...@googlegroups.com<dotnetarchitects%252Buns...@googlegroups.com>
>
> > >> > <dotnetarchitects%2Bunsu...@googlegroups.com<dotnetarchitects%252Buns...@googlegroups.com>
> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
>
> > >> > > > <dotnetarchitects%2Bunsu...@googlegroups.com<dotnetarchitects%252Buns...@googlegroups.com>
> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
>
> > >> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
> > <dotnetarchitects%25252Bun...@googlegroups.com<dotnetarchitects%2525252Bu...@googlegroups.com>
>
> > >> > > > > > <dotnetarchitects%2Bunsu...@googlegroups.com<dotnetarchitects%252Buns...@googlegroups.com>
> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
>
> > >> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
> > <dotnetarchitects%25252Bun...@googlegroups.com<dotnetarchitects%2525252Bu...@googlegroups.com>
>
> > >> > > > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
> > <dotnetarchitects%25252Bun...@googlegroups.com<dotnetarchitects%2525252Bu...@googlegroups.com>
>
> > >> > <dotnetarchitects%25252Bun...@googlegroups.com<dotnetarchitects%2525252Bu...@googlegroups.com>
> > >> > > > > > > > Para mais opções visite o grupo em
> > >> > > > > > > >http://groups.google.com/group/dotnetarchitects?hl=pt-br
>
> > >> > > > > > --
> > >> > > > > > Você recebeu esta mensagem porque faz parte do grupo .Net
> > >> > Architects
> > >> > > > > > hospedado no Google Groups.
> > >> > > > > > Para postar envie uma mensagem para
> > >> > dotnetar...@googlegroups.com
> > >> > > > > > Para sair do grupo envie uma mensagem para
> > >> > > > > > dotnetarchitec...@googlegroups.com<dotnetarchitects%2Bunsu...@googlegroups.com>
> > <dotnetarchitects%2Bunsu...@googlegroups.com<dotnetarchitects%252Buns...@googlegroups.com>
>
> > >> > <dotnetarchitects%2Bunsu...@googlegroups.com<dotnetarchitects%252Buns...@googlegroups.com>
> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
>
> > >> > > > <dotnetarchitects%2Bunsu...@googlegroups.com<dotnetarchitects%252Buns...@googlegroups.com>
> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
>
> > >> > <dotnetarchitects%252Buns...@googlegroups.com<dotnetarchitects%25252Bun...@googlegroups.com>
> > <dotnetarchitects%25252Bun...@googlegroups.com<dotnetarchitects%2525252Bu...@googlegroups.com>
>
> > >> > > > > > Para mais opções visite o grupo em
> > >> > > > > >http://groups.google.com/group/dotnetarchitects?hl=pt-br
>
> > >> > > > > --
>
> > >> > > > --
> > >> > > > Você recebeu esta mensagem porque faz parte do grupo .Net
> > Architects
> > >> > > > hospedado no Google Groups.
> > >> > > > Para postar envie uma mensagem para
> > dotnetar...@googlegroups.com
> > >> > > > Para sair do grupo envie uma mensagem para
> > >> > > > dotnetarchitec...@googlegroups.com<dotnetarchitects%2Bunsu...@googlegroups.com>
> > >> > > > Para mais opções visite o grupo em
>
> ...
>
> read more »
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Henry, qual é a sua opinião sobre IoC?
Atenciosamente Sidney Lima Filho Vivina Softhouse (0xx21) 7867-2321 55*10*68934 BLOG: http://blog.vivina.com.br | http://twitter.com/vivina |
Henry, já que não me enquadro no resto da turma, explique melhor por favor porque você disse "Na sua opinião." ao argumento do Giovanni. Pois o que ele falou é plausivel e gostaria de entender sua opinião plausivel também. |
Atenciosamente Sidney Lima Filho Vivina Softhouse (0xx21) 7867-2321 55*10*68934 BLOG: http://blog.vivina.com.br | http://twitter.com/vivina |
Por "resto da turma" nao quis generalizar o grupo inteiro. Era
> ...
>
> read more »
> ...
>
> read more »
> ...
>
> read more »
> ...
>
> read more »
> ...
>
> read more »