[quote=Paulo Silveira][quote=sergiotaborda]Testes são um segundo cliente. Eles força a desenhar o sistema para dois clientes. Isso ajuda imenso no design pq vc vê onde as coisas têm que está amarráveis não não amarradas. O verdadeiro anti-pattern aqui seria ServiceLocator não o singleton.
O serviceLocator foi abusado , como muitos outros padrões , ao ponto de criar um anti-padrão.
[/quote]
Mochuara, acho que o Sergio conseguiu excplicar bem melhor. Novamente concordo 100%. Quem usa TDD nunca mais escreve esse tipo de codigo com singleton, pois de cara percebe que nao vai conseguir testar. Esse cheiro de service locator realmente é a parte prejudicial no uso do singleton.[/quote]
Eu particularmente assino embaixo de tudo que o taborda falou, porém qual é o foco do tópico ? É singleton ? DI ? não ! O foco é a revisão dos padrões
Portanto os padrões devem ser revisados? Sim ou não ? Quais devem ? Devem continuar Existindo sim ou não?
Quem falou que TDD é o correto? Desde quando TDD vale pra tudo? Entendo que TDD aqui é o Test Driven Development.
IMO, posso indicar que depois de muitos e muitos projetos de grande porte, você vai perceber que padrões são sim necessários, quais padrões? O arquiteto vai decidir por projeto e por situação junto com os requisitos do sistema.
Nunca existirá uma solução única para um problema, sempre existirão no mínimo duas, a minha solução e a outra solução possível. Por que existem vários tipos de vassoura se todas varrem o chão?
A TI tem e muito que se padronizar, seja em linguagem, em Design Patterns, em processos no que for, tudo hoje em dia é muito manual, artesanal.
Você produziria um carro do zero sempre? Ou vai usar projetos padrões? Claro que vai usar padrões? Por que?
Produzir código pra depois refatorar ? Tá então eu vou criar um motor 1.0 novo e depois de pronto eu faço ele de novo? É isso ?
Temos sim é que repensar a nossa indústria como indústria de serviços e parar de ficar discutindo se acessar um Singleton via reflection vai estourar a segurança !
Quem disse que tudo que tá na VM tá certo? Quem falou que os design patterns estão sempre certos? Alguém foi lá e amarrou a mão do cidadão?
A única coisa que sempre será constante em um projeto seja ele qual for, em qual linguagem for e pra qual cliente for, é que ele deverá ter um inicio um meio e um fim e que faça o que o cliente quer, porém isso não justifica escrever código 'porco" nem impossível de manter, o mínimo de qualidade é pedida.
O que é qualidade em desenvolvimento de software? Como medimos a qualidade de um código ? Medimos se ele usa padrão? Se implantou o padrão certinho ?
Isso sim é a questão, singleton, shared, flyweight, proxy, factory o padrão que for, não importa, o que importa é fazer um código:
- Conciso
- Manutenível
- Inteligível
- Rápido
- Correto
O resto é tentar traduzir o mundo em padrões.
Ou alguém já ouviu dizer de bilbioteca de modelagem ? Ou padrões de modelo ? O Objeto pessoa tem que ter CPF/CNPJ e nome? Não ! Cada caso é um caso.
Aonde devemos padronizar ? O que devemos padronizar? Quando padronizaremos ?
Quando teremos qualidade em SW ?
Fica ai algumas questões para os ilustres colegas da classe discutirem se desejarem
O cara não aprende java pelos padrões !!! Em linguagem nenhuma, linguagem aprende-se pela linguagem, depois você usa ela da melhor forma.
JEE Design Patterns foi a melhor forma na época encontrada por uns malucos chamados de GOF e agora com Seam e Ruby por ai com JSF 2 , Ajax e Portals e etc ?
Qual é o padrão ? :twisted: :twisted: :evil: :evil: :evil: :evil: :evil: