Boas Práticas com MVC

Apesar de o padrão de desenvolvimento modelo-visão-controle (MVC) ser conhecido por quase todos os programadores, a maneira apropriada de usá-lo no desenvolvimento de aplicações ainda falta a muitas pessoas. A ideia central por trás do MVC é reuso de código e separação de conceitos. Nesta seção, nós descrevemos algumas orientações gerais sobre como seguir melhor o MVC ao desenvolver uma aplicação com o Yii.

Para explicar melhor estas orientações, nós assumimos que uma aplicação Web consiste de algumas sub-aplicações, tais como

As sub-aplicações podem ser implementadas em termos de módulos, ou como aplicações Yii que compartilham código com outras sub-aplicações.

Modelo

Modelos representam a estrutura de dados que está por trá de uma aplicação Web. Os modelos são geralmente compartilhados por diferentes sub-aplicações de uma aplicação Web. Por exemplo, um modelo LoginForm pode ser usado pelo front e pelo back end de uma aplicação; um modelo News pode ser usado por comandos de console, APIs Web, pelo front end e pelo back end de uma aplicação. Então, modelos

Algumas vezes, seguir a última regra pode tornar o modelo muito grande, com código demais em uma só classe. Isto pode também dificultar a manutenção do modelo se o seu código serve a diferentes propósitos. Por exemplo, um modelo News pode conter um método chamado getLatestNews que é usado somente pelo front end; ele pode também ter um método chamado getDeletedNews que é usado somente pelo back end. Isto pode ser adequado para uma aplicação de tamanho pequeno ou médio. Para grandes aplicações, a estratégia a seguir pode ser usada para tornar os modelos mais manuteníveis:

Então, se nós seguirmos esta estratégia no nosso exemplo acima, nós teríamos um modelo News na apliação front end que tem somente o método getLatestNewse nós vamos adicionara outro modelo News na aplicação back end, que vai ter somente o método getDeletedNews.

Em geral, os modelos não devem ter lógica que lide diretamente com os usuários. Mais especificamente, os modelos

Visão

Visões são responsáveis pela representação dos modelos no formato que os usuários desejam. Em geral, visões

Visões podem ser reutilizadas de maneiras diferentes:

Controle

Controles são a cola que une modelos, visões e outros componentes em uma aplicação executável. Controles são responsáveis por lidar diretamente com as requisições dos usuários. Então, controles

Em uma aplicação MVC bem projetda, os controles são geralmente bem "magros", contendo provavelmente apenas algumas dúzias de linhas de código; enquanto os modelos são bem "gordos", com a maior parte do código responsável por representar e manipular os dados. Isto acontece porque a estrutura de dados e a lógica de negócios representadas pelos modelos são tipicamente muito específicas para a aplicação em particular, e precisam ser profundamente personalizadas para atender às requisições específicas da aplicação; enquanto a lógica dos controles comumente seguem um padrão similar em várias aplicações e então podem ser simplificadas pelo framework ou pelas classes base.

$Id$