Qual é a importância do MVC na criação de aplicações? - Dúvidas e Discussão de Programação - Portugal-a-Programar
Qual é a importância do MVC na criação de aplicações?
By JoaoNascimento, May 21, 2011 in Dúvidas e Discussão de Programação
Abri este tema de discussão para proporcionar a discussão sobre a importância do MVC na construção de aplicações.
Acham que é importante? Porque? Quais as vantagens e desvantagens?
Uma das vantagens é a modularidade. O MVC advoga uma forma de separar a aplicação em componentes, que tornam a aplicação mais organizada, e mais fácil de manter.
Exacto, mas por exemplo, existem várias formas de implementação do MVC, desde a ser o Controller a receber as interacções e a view apenas mostra-as até ao controller controlar todas as intercções do programa e o model não conhece a view nem vise-versa, passando pela arquitectura que a view vai buscar os dados ao model e apresenta-os no ecrã sem passar pelo controller.
Para equipas grandes de programadores não será difícil, ou não poderá dar problemas o facto de muitas vezes não saberem bem qual é a arquitectura do mvc que os outros programadores da equipa estão a usar?
Nunca trabalhei nunca equipa grande, mas diria que uma equipa grande tem primeiro que acordar nos detalhes (mas não sou propriamente um especialista em MVC).
Pessoalmente, prefiro que o model e o view não se conheçam, de modo a minimizar as dependências entre componentes. Mas como disse, não sou propriamente um especialista em MVC
Ninguém deve ser especialista em MVC, pois não é algo em que se trabalhe, é algo que se usa para esquematizar o trabalho de forma mais fácil e em cima dele é que se assenta todo o esquema. Pois, existem muitas maneiras de implementar na minha opinião e todas elas devem ter o seu sentido,.
qual seria a arquitectura MVC mais eficas, a de 1988 ou a de 2008?
Quais as vantagens na de 1988?
Convinha apresentares as duas arquitecturas! Por acaso, conheço-as.
1988 ->http://www.google.pt/imgres?imgurl=http://wiki.sintectus.com/pub/GrupoWeb/SlidesPadraoMVC/model-view-controller-01.png&imgrefurl=http://wiki.sintectus.com/bin/view/GrupoWeb/SlidesPadraoMVC&usg=__334xf-GR-mfEJrWufJSHT5wT2VY=&h=340&w=284&sz=4&hl=pt-PT&start=0&sig2=3N6yalFa8-WCNSg_EGU9WQ&zoom=1&tbnid=QIhEo94nvDVnOM:&tbnh=156&tbnw=130&ei=FoTaTZylIMmaOvvmkeIP&prev=/search%3Fq%3Dmvc%26hl%3Dpt-PT%26sa%3DX%26biw%3D1366%26bih%3D643%26tbm%3Disch%26prmd%3Divnsrb&itbs=1&iact=rc&dur=480&sqi=2&page=1&ndsp=18&ved=1t:429,r:16,s:0&tx=76&ty=97
2008 ->http://www.google.pt/imgres?imgurl=http://1.bp.blogspot.com/_gpPAAOeLVBM/TRF6Zq0qK6I/AAAAAAAAAVw/cisB7_r8Y70/s1600/MVC.png&imgrefurl=http://www.fuzionpro.info/2010/12/ror-understanding-model-view-controller.html&usg=__WAXMse7PpCdPUBoABNYdXiOFbUc=&h=584&w=948&sz=155&hl=pt-PT&start=36&sig2=YNGn-p2egOdkVn53E2fL9w&zoom=1&tbnid=FPbjzpL7Eu12LM:&tbnh=130&tbnw=211&ei=FoTaTZylIMmaOvvmkeIP&prev=/search%3Fq%3Dmvc%26hl%3Dpt-PT%26sa%3DX%26biw%3D1366%26bih%3D643%26tbm%3Disch%26prmd%3Divnsrb0%2C1200&itbs=1&iact=hc&vpx=905&vpy=121&dur=310&hovh=176&hovw=286&tx=159&ty=76&sqi=2&page=3&ndsp=18&ved=1t:429,r:10,s:36&biw=1366&bih=643
Mas quanto a tua pergunta, acho que tudo depende do que quiseres construir e da maneira como irá funcionar!
Não percebi exactamente o sentido dessa afirmação. Tecnicamente, quem programa nativamente para Mac e/ou iOS, MVC já deverá fazer parte do estilo de vida
Basicamente, o verdadeiro objectivo do MVC é mesmo separar o Model da View, ou seja, toda a interacção entre estes deve ser feita através de um Controller. Alterar o Model não deve ter qualquer efeito na View, nem vice-versa.
Peço desculpa estava a pensar noutra coisa quando escrevi isso de tarde, realmente até na minha vida o mvc ja entrou no dia a dia.
Mas, este tipo de tópicos é um daqueles que pode causar imensa discussão devido às definições de MVC. Cada um pode puxar a brasa à sua sardinha, por assim dizer. O MVC fragmentou-se nas recomendações de design patters e modo de utilização das mesmas consoante o modo de utilização pretendido por quem começou a aplicar essa arquitectura no processo de desenvolvimento. Nalguns casos essa fragmentação gerou arquitecturas com nomes distintos, noutros casos não. Lá bem no fundo, o MVC corresponde a um conjunto de design patterns e a uma forma de utilização recomendada (leia-se obrigatória) das mesmas. Mais ou menos restrito em relação ao modelo tradicional, continua a ser considerado MVC. Dois exemplos abaixo (repare-se nos nomes das design patterns associadas directamente a cada uma das componentes, nas diferentes definições):
MVC "Tradicional":
Eu, sinceramente, não vejo grande utilidade na interacção directa entre a View e o Model. A meu ver acho que devem estar sempre separadas. Inclusivé, no iOS (e OS X apps) é comum programarem-se as Views para nem sequer realizarem quaisquer operações, sendo estas delegadas a Controllers que tratam de responder às interacções.
Tudo o que disseste foi com razão, eu por exemplo utilizo muito o MVC "tradicional" desde o inicio deste ano, mas como já começo a ter um conhecimento maior sobre a matéria, realmente penso que se o controlador existe deveria ser usado para controlar todos os tipos d interacções.
Quando ao que referiste sobre várias arquitecturas do mvc ainda ontem ouvi uma que me fiquei a perguntar qual era a diferença, mas que tinha um nome diferente, MVP se não estou em erro.
A ligação directa entre a View e o Model é muitas vezes utilizada como simples bindings.
MVC é um paradigma apenas, maioritariamente uma forma de organizar o código, tal como HMVC. Não é preciso sequer seguir esse paradigma numa aplicação que siga esses parâmetros (a menos que a própria obrigue a isso, mas nunca consegue pelo menos em PHP)
Há muitos conceitos diferentes de MVC, cada pessoa interpreta aquilo como quer, o que significa que a integridade / organização de uma aplicação continua a estar ao critério do programador / analista. A maior parte dos paradigmas que tenho visto de MVC fogem ao que o MVC é. Pessoalmente prefiro tratar as Views como objectos, que tratam de definir as variáveis que constituem cada parcela de um template. Dá mais trabalho, mas fica bastante simples de manter / entender posteriormente, que é outro dos objectivos do MVC.