terça-feira, 15 de abril de 2008

Onde colocar as regras de negócio de um sistema?

Olá pessoal,
Programo em PHP desde 2003, no entanto ainda não sou um exímio programador. Muitas coisas tenho aprendido por minha própria conta, pesquisando na internet, lendo livros, consultando amigos, fóruns, listas de discussões e etc.
Um dos motivos deste Blog é registrar o que venho aprendendo como programador. O tema a ser tratado neste primeiro texto é, onde devemos colocar as regras de negócio do nosso sistema.

Este assunto foi muito discutido na lista "PHP-Brasília" e o melhor esclarecimento foi colocado pelo nosso amigo Pablo Sánchez, vou descrever aqui meu entendimento sobre a explicação dele.

As Regras de Negócio estão presente em todo o fluxo de uma aplicação, desde os formulários de entrada de dados até a estrutura do banco de dados. Elas não podem estar em um único lugar da nossa aplicação, pois não há como centralizar em um único local, todas elas. Ao ler todo o artigo voce entenderá.
Nos formulários, temos por exemplo, as validações de preenchimento dos seus campos. Estas validações fazem parte das Regras de Negócio e são implementadas no código de tratamento dos dados recebidos destes formulários.
Nesta validação pode-se utilizar JavaScript, no intuito apenas de minimizar o trabalho de verificação dos dados fornecidos pelo usuário, sendo útil como uma pré-validação. Nunca deixe a validação de dados totalmente por conta do JavaScript, pois o usuário pode desabilitar este recurso pelo próprio browser, causando assim erros e inconsistências em todo o sistema.
Se estamos trabalhando com MVC, deveremos ter na camada de controle apenas as regras de negócio que validam informações contextualizadas, por exemplo existem casos em que o preenchimento de alguns campos só serão obrigatórios em determinadas situações (eu mesmo já implementei regras em que se o cadastro fosse preenchido por um usuário externo, todos os campos obrigatórios deveriam serem preenchidos, se fosse um usuário interno, não seria necessário validar todos).
Na camada de Modelo é que se faz a validação de preenchimento correto dos campos, como verificação de número de CPF, de E-mail (todo endereço de e-mail deve ter um @) , assim como validação de relacionamento entre tabelas e etc.
As regras de negócio também estão presentes na estrutura do nosso banco de dados, quando na definição dos relacionamentos e especificações dos campos, representando o domínio do sistema.
Assim, respondo-lhe à pergunta: onde colocar as regras de negócio.
Conforme nosso amigo Pablo Sánchez, elas deverão estar presente em toda a aplicação a ser desenvolvida.