Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

m@dDog

[Resolvido] Boas práticas de desenvolvimento com CakePHP

Recommended Posts

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 óbvios
    Exemplo:
    // Salva os dados do usuário
    $this->User->save($data)
    


  • Utilize constantes para códigos, valores etc
    Exemplo:
    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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.