m@dDog 5 Denunciar post Postado Maio 17, 2012 As dicas estão divididas em Controllers, Models, Views e Dicas Gerais Controllers Controllers são somente um tipo de interface entre Models e Views. Por isso Controllers NÃO DEVEM ter regras de negócios. Controllers devem ser "magros". Não ter regras de negócio não significa que não possam ter IFs.Exemplo (isso está correto): if ($this->User->save($this->request->data)) { $this->Session->setFlash(__('O usuário foi salvo com sucesso')); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash(__('O usuário não pôde ser salvo.')); } Utilize Components como um auxiliador do Controller.Exemplo:Um componente de e-mail que evita código duplicado entre controladores que disparam e-mails. Models Models não são somente para gravação de dados, as regras de negócio podem estar distrbuídas aqui. Os models são "gordos" (não entenda isso como poder fazer o que quiser nos models). Você pode criar models que não tenham uma tabela representativa em seu banco de dados. Se existem regras que podem ser compartilhadas entre Models, pode ser que você deva distribuir parte da lógica em comportamentos. Use Behaviors. Se ainda assim o model estiver ficando pesado, talvez haja alguma coisa de errado com sua lógica. Views Views são somente para imprimir resultados, NUNCA coloque regras de negócio. Aqui você deve evitar até mesmo os IFs. Se você tiver que utilizar IFs, crie um Helper para fazer isso. Se um Helper não pode te ajudar, existe alguma coisa errada com esse nome, ou com sua lógica.Exemplo: Você pode criar um helper para auxiliar em uma paginação (isso é só um exemplo, o CakePHP já tem helpers que fazem isso). Sempre que possível, escreva os textos com internacionalização.Exemplo (no CakePHP 2+):<?php echo __('Relatórios'); ?> em links e helpers também <?php echo $this->Html->link(__('Relatórios'), array('action' => 'reports')); ?> Dicas gerais Crie métodos e variáveis com nomes simples e concisos.Exemplo: NÃO USE: $x = 'Nome do usuário'; USE: $userName = 'Nome do usuário'; Comente seu código da mesma forma. Você pode colocar exemplos nos comentários de fluxo.Exemplo: /** * Saves a value for a key. * * E.g. * * $this->Model->saveKeyValue('language' => 'pt-br'); * * @param string $key * @param string $value * @return boolean True on success, or false on failure */ public function saveKeyValue($model, $key, $value = null) { Não faça comentários óbviosExemplo: // Salva os dados do usuário $this->User->save($data) Utilize constantes para códigos, valores etcExemplo: const INACTIVE = 0; const ACTIVE = 1; O método ficou grande? Passou de 30 linhas? Crie outros métodos menores, privados caso não precise de acesso por outras classes (o método deve caber na tela, até dois, e não estou falando de monitores de 32 polegadas). Crie Tests (seus colegas de trabalho e os clientes agradecem). O Book do CakePHP ajuda bastante. Se vocês concordam, discordam de algo ou tem mais dicas, escrevam. Compartilhar este post Link para o post Compartilhar em outros sites