É isso, pensa que no controller não deve conhecer as regras da sua aplicação, ele apenas faz chamdas, controla fluxo, popula objetos, essas coisas, mas ele não deve conhecer regras ..
Livros: http://www.submarino.com.br/produto/9/343713/domain-driven+design http://www.submarino.com.br/produto/1/1348031/padroes+de+arquitetura+de+aplicacoes+corporativas http://www.submarino.com.br/produto/1/242126/refatoracao:+aperfeicoando+o+projeto+de+codigo+existente 2009/2/10 Vinicius Cruz <[email protected]> > Fala, Marcus! > Sobre DDD, tens algum livro ou apostila para indicar? > > O que me preocupou com tudo isso é justamente o que citastes. Estou vendo > além, uma nova abordagem. E, cada mês que passa, o sistema da empresa tem > crescido consideravelmente. E, do jeito que as coisas estão indo, a > escalabilidade estava em baixa. Ou seja, daqui a um tempo, eu (ou outro > louco que assumisse o comando) iria se ver doido pra deixar tudo em ordem. > > Dai a necessidade de eu entender melhor essa abordagem, analisar as > entidades, e refatorar, na medida do possivel, o sistema nesse "novo > conceito". > > A mosta tá virando um bicho, eu ainda estou com o mata-mosca em mãos. =D > > Em relação ao exemplo, minha dúvida é se o code deve estar no controller, > ou no model, já que o mesmo é responsável pela regra de negócio. Estive > lendo um pouco de ruby on rails, e eles tem por lema deixar o model gordo e > o controller magro, não é isso? > > Vinicius > > 2009/2/10 Marcus Cavalcanti <[email protected]> > > Fala Vinicus.. DDD é um pouco sobre do que estamos tentando falar, se >> aprofunde que vale a pena, cada vez que vc se aprofundar, mais vai perceber >> que sabia menos das coisas hehe isso é normal, por isso as vezes a >> ignorância uma dádiva, mas em outros casos não hehe >> >> Mas vamos lá, então, isso é uma questão bem conceitual mesmo... não é que >> o CI está errado, acho que ele apenas não dá um suporte NATIVO para >> aplicações mais complexas, mas nada que você possa extendê-lo, como eu faço >> por exemplo no caso do services, sacou? Na verdade ele implementa o MVC >> certo, pois ele separa as coisas, agora como as pessoas fazem o seu uso, aí >> é outra coisa.. uma coisa que eu acho importante citar é que nesse caso não >> existe o certo e o errado e a verdade e a mentira, o que existe é uma >> preocupação para quando o buraco ficar mais embaixo.. se você faz da forma X >> e te atende muito bem, vc não tem problemas, consegue dar manutenção, >> extender e etc, ok ótimo, te atende, para que você vai mudar? Agora se você >> começar a perceber ao conhecer uma nova abordagem que o que você usava pode >> ser melhorado, é bom vc começar a pensar nisso, o que eu quero dizer é "Não >> tente matar uma mosca com um tiro do canhão". >> >> A gente tá falando de aplicações enterprise, ou seja, aplicações com um >> certo tamanho, onde é importante você deixar as coisas menos acopladas >> possíveis e mais coesas também. Por exemplo, ActiveRecord, se vc for parar >> pra pensar na essencia é um anti-pattern, mas em muitos casos ele dá uma >> agilidade e velocidade de desenvolvimento que fazer o seu uso é muito bom. >> Da mesma forma que as vezes você usar Activerecord em alguns casos não é >> bom, é melhor começar a pensar em soluções que implementem um ORM por >> exemplo. >> >> No seu caso de usuários x emails, você poderia pensar da seguinte forma: >> >> - É um usuário que conhece um email ou um email que conhece um usuário? >> - Um email precisa de alguém para ser enviado, esse alguém é um usuário? >> - Você precisa ter uma entidade para relação email_x_usuario? Eu >> sinceramente acredito que nao, pq o dominio da sua aplicacao fala de usuario >> e email e não de uma relação, nesse caso um "select * from email_x_usuario >> where id_usuario = ?" não resolveria o problema? e onde isso ficaria? >> acredito que no modelo de usuario, mas depende. >> >> Por isso que é importante vc analisar seu cenário, não tem uma receita de >> bolo feita, cada aplicação tem um contexto e particularidades o importante >> nesse caso é conhecer as alternativas para ver a que melhor te atende. >> >> Engenheria de software é algo ainda recentemente novo, comparo por exemplo >> a uma engenharia civil por exemplo, portanto ainda é algo que cabem muitas >> definições, opniões, conceitos, por isso que a parada é estudar mesmo :) >> >> 2009/2/10 Newton Wagner <[email protected]> >> >>> Adicionando um pouco de sal à dúvida, neste caso pode-se considerar >>> >>> que e-mail seria uma entidade fraca, ou seja, ela não existe sem o >>> usuário. Mas e se for uma entidade forte? Vocês tratariam da mesma >>> forma? :) >>> >>> >>> 2009/2/10 Vinicius Cruz <[email protected]>: >>> > Roberto >>> > faz sentido. Li uma vez no manual, se não me engano, dizendo que para >>> cada >>> > tabela deveria ter um model... oO >>> > Não lembro exatamente onde foi, mas essa discussão está quebrando >>> vários >>> > paradigmas (pelo menos pra mim). >>> > >>> > Vinicius >>> > 2009/2/10 Roberto A. Longhi <[email protected]> >>> >> >>> >> Salve Vinicius blz ? >>> >> >>> >> =] >>> >> Bom to entrando de gaiato na história, mas tenho algumas duvidas >>> referente >>> >> a isso, e vou colocar algumas considerações. >>> >> >>> >> No caso que você ilustrou do usuário com vários emails, acredito que o >>> >> ideal é deixar a consulta de emails no mesmo model, neste caso o model >>> de >>> >> usuário, para evitar carregar outros models. >>> >> >>> >> $queryUsuario = $this->Usuariomodel->getLista(); >>> >> foreach($queryUsuario->result() as $row) >>> >> { >>> >> $idusuario = $row->idusuario; >>> >> $emails[$idusuario] = $this->Usuariomodel->getEmails($idusuario); >>> >> } >>> >> Estou levando para o lado que o model controla todas as informações >>> >> relacionados a aquela entidade (no caso o usuário). Mesmo que ela seja >>> >> armazenada em outra tabela (nesse caso uma tabela de emailXusuario. >>> >> >>> >> Faz sentido ? >>> >> >>> >> Vinicius Cruz escreveu: >>> >> >>> >> Ok, Marcus. >>> >> Esses dias estava dando uma lida sobre DDD. Li algo sobre arquitetura >>> de 5 >>> >> camadas, e estou tentando me aprofundar cada vez mais no assunto. >>> Alias, to >>> >> indo hoje fazer uma entrevista pra pós de engenharia de software. Vou >>> meter >>> >> as caras nos livros!! =D >>> >> Agora, sempre surge novas duvidas. Por exemplo: uma vez foi postado na >>> >> lista, sobre como recuperar a lista de alguma coisa de um usuário. Por >>> >> exemplo: um usuário tem vários emails cadastrados, em uma tabela de >>> >> relacionamento. Como recuperar a lista de usuários e seus emails? >>> >> Como eu faço atualmente. No controller: >>> >> $queryUsuario = $this->Usuariomodel->getLista(); >>> >> foreach($queryUsuario->result() as $row) >>> >> { >>> >> $emails[$row->idusuario] = >>> >> $this->Emailsmodel->consulta_emails($row->idusuario); >>> >> } >>> >> Mas entrei em profunda depressão em saber que o CI não aborda o MVC >>> como >>> >> conceituado (ou pelo menos dá margem ao erro). eheheheheh >>> >> Mas a questão é: tá errado fazer assim? Qual seria uma outra >>> abordagem? >>> >> Vinicius >>> >> 2009/2/10 Djalma Araújo | www.djalmaaraujo.com.br >>> >> <[email protected]> >>> >>> >>> >>> Então, pode crer... >>> >>> a idéia é apenas o usuário enviar a imagem dele no portfolio e >>> atualizar >>> >>> no banco.. essa atualizacao eu utilizo um funcao o model.. >>> >>>> >>> >>> >>> >>> _______________________________________________ >>> >>> Lista mailing list >>> >>> [email protected] >>> >>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>> >>> >>> >> >>> >> ________________________________ >>> >> _______________________________________________ >>> >> Lista mailing list >>> >> [email protected] >>> >> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>> >> >>> >> >>> >> -- >>> >> Roberto Almeida Longhi >>> >> Programador >>> >> Contmatic >>> >> (11) 2942 6700 Ramal 1404 >>> >> (11) 8599 9022 >>> >> www.contmatic.com.br >>> >> >>> >> _______________________________________________ >>> >> Lista mailing list >>> >> [email protected] >>> >> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>> >> >>> > >>> > >>> > _______________________________________________ >>> > Lista mailing list >>> > [email protected] >>> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>> > >>> > >>> >>> >>> >>> -- >>> Newton Wagner >>> >>> skype: newtonwagner >>> msn/gtalk: [email protected] >>> >>> http://www.newtonwagner.net/ >>> - http://www.owshit.com.br/ >>> >>> _______________________________________________ >>> Lista mailing list >>> [email protected] >>> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >>> >> >> >> >> -- >> Marcus Cavalcanti >> 21 9144-5068 >> www.marcuscavalcanti.net/blog >> >> _______________________________________________ >> Lista mailing list >> [email protected] >> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br >> >> > > _______________________________________________ > Lista mailing list > [email protected] > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > > -- Marcus Cavalcanti 21 9144-5068 www.marcuscavalcanti.net/blog
_______________________________________________ Lista mailing list [email protected] http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

