E acho que por ultimo pode deixar esse aqui: http://www.submarino.com.br/produto/9/373407?franq=102414
2009/2/10 Marcus Cavalcanti <[email protected]> > os livros são meios caros,mas vale.. > > mas tem um site que tem pdf de livros, para quem curtir: > http://www.flazx.com/ > > > 2009/2/10 Marcus Cavalcanti <[email protected]> > >> É 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 >> > > > > -- > Marcus Cavalcanti > 21 9144-5068 > www.marcuscavalcanti.net/blog > -- Marcus Cavalcanti 21 9144-5068 www.marcuscavalcanti.net/blog
_______________________________________________ Lista mailing list [email protected] http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

