Changes between Initial Version and Version 1 of WF/Metodologia


Ignore:
Timestamp:
07/24/07 15:01:38 (17 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WF/Metodologia

    v1 v1  
     1<html>  
     2 
     3<ul><li>Somente uma classe por arquivo php;</li><li>Os nomes das classes iniciam sempre com letra maiúscula (padrão Java). Ex: Classe, !NomeClasse. 
     4 
     5<br /></li><li>Os nomes dos métodos seguem o padrão Java, onde é sempre 
     6 
     7escrito com letras minúsculas, caso haja mais de uma palavra, a segunda 
     8 
     9inicia com letra maiúscula. Ex: metodo, meuMetodo.</li><li>Para cada atributo, preferencialmente privado, de uma classe devem ser criados os respectivos métodos getter e setter, públicos, que adicionam uma camada a mais de validação.</li><li>Instâncias externas recebidas por uma classe via argumentos, devem ser transformados em atributos e NÃO PODEM ser manipulados diretamente, mas através de getters e setters.</li><li>Variáveis externas à classe em forma de array devem ser serializadas totalmente (criando uma classe que encapsule a funcionalidade da array) ou parcialmente (criando apenas um método).  
     10 
     11<br /></li><li>Métodos com argumentos de tipo String que deve seguir valores padronizados, devem declarar constantes estáticas internas que serão utilizadas para minimizar o erro na passagem do argumento e também porque constantes aparecem no autocomplete dos editores por fazerem parte da classe.  
     12 
     13<br /></li><li>Para conjuntos de classes que visam um mesmo objetivo porém implementando metodologias diferentes, como por exemplo classes de acesso a diferentes sistemas gerenciadores de banco de dados (SGBD), criar interfaces (PHP 5) ou mesmo classes (PHP 4) com o propósito de padronizar os métodos das classes onde a implementação é realmente feita. Isso possibilita criar uma classe de abstração genérica que possa acessar as mesmas funcionalidades de forma independente da metodologia (SGBD) utilizada.  
     14 
     15<br /></li><li>Arquitetura 3 camadas:</li><ul><li>Camada de acesso a dados (DAL - Data Access Layer): 
     16 
     17<br /></li><ul><li>Recupera dados de fontes como bancos de dados e arquivos XML, por exemplo e os fornecesse à camada de lógica de negócios.  
     18 
     19<br /></li><li>Somente pode ser acessada e manipulada diretamente pela camada de lógica de negócios.</li><li>Não deve fazer restrições de segurança ou validação de dados, que são funções da camada de lógica de negócios.</li></ul><li>Camada de lógica de negócios (BLL - Business Logic Layer):</li><ul><li>Adiciona restrições de segurança sobre a camada de acesso a dados.  
     20 
     21<br /></li><li>Adiciona validação de dados.</li><li>Manipula classe Smarty (ou subclasses dela) para geração da camada de apresentação, que contém formatação de dados.</li><li>Gerencia de códigos de erro de acordo com o mapeamento nos arquivos de configuração Smarty. 
     22 
     23<br /></li></ul><li>Camada de apresentação (PL - Presentation Layer):</li><ul><li>Composta pelas páginas PHP acessadas diretamente pelo browser e templates Smarty. 
     24 
     25<br /></li></ul><ul><li>Apresenta interface para interação (entrada de dados) com o usuário.  
     26 
     27<br /></li><li>Formata e exibe dados brutos (raw data) vindos das camadas anteriores.  
     28 
     29<br /></li><li>Trabalha somente com a camada de lógica de negócios.  
     30 
     31<br /></li></ul><li>Arquivo de configuração do processo (shared.php):</li><ul><li>Responsável por fazer a união das três camadas e possibilitar o mecanismo de extensão das classes base de cada camada. Todos os includes do processo são feitos nesse arquivo. 
     32 
     33<br /></li></ul></ul><li>usar comentário com tags Doxygen estilo !JavaDoc;</li><li>Comentário mínimo para classes:</li><ul><li>bloco de comentário para a classe;</li><li>bloco de comentário para cada método;</li></ul><li>Comentário adicional recomendado:</li><ul><li>bloco de comentário para a lista de atributos da classe;</li><ul><li>@var tipo nome_variavel;</li><li>@brief descrição breve;</li><li>@public, @private ou @protected;</li><li>@see nome_metodo_getter_setter. 
     34 
     35<br /></li></ul><li>comentários internos dos métodos. 
     36 
     37<br /></li></ul><li>Padrão de nomenclatura de classes de inclusão class.nomeclasse[.extends.nomesuperclasse].inc.php.</li><li>tags exigidas para o bloco de comentário da classe:</li><ul><li>@class nome_classe; 
     38 
     39<br /></li><li>@brief descrição breve; 
     40 
     41<br /></li><li>@package nome_processo;</li><li>@author nome_desenvolvedor.</li></ul><li>tags exigidas para o bloco de comentário dos métodos</li><ul><li>@brief descrição breve;</li><li>@param tipo nome_parametro para cada parâmetro;</li><li>@return tipo_retorno;</li><li>@private, @public ou @protected visibilidade;</li><li>@throw nome_exceção;</li></ul><li>tags recomendadas para o bloco de comentário da classe:</li><ul><li>@bug descrição de bug</li><li>@todo tarefa pendente</li><li>@example nome_arquivo_com_exemplo_de_utilização_da_classe.</li></ul><li>tags recomendadas para o bloco de comentário dos métodos:</li><ul><li>@overload nome_método_sobrecarregado  
     42 
     43<br /></li></ul><li>Nomenclatura das atividades e respectivas páginas PHP:</li><ul><li>Devem ser SEMPRE em português e serem um verbo (passar idéia de ação, atividade, comportamento), com a primeira letra maiúscula. Exemplo: Compor.php, Escrever.php, Finalizar.php.  
     44 
     45<br/></li></ul><li>Utilizaçãodosseguintes[wiki:WF_PadrõesdeProjeto)):</li><ul><li>((Singleton));</li><li>((Factory] 
     46. 
     47 
     48<br /></li></ul></ul> 
     49 
     50<br /> 
     51 
     52 
     53 
     54 
     55 
     56 
     57 
     58 
     59 
     60 
     61 
     62 
     63 
     64 
     65 
     66 
     67 
     68 
     69 
     70 
     71 
     72 
     73 
     74 
     75 
     76 
     77 
     78 
     79 
     80 
     81 
     82 
     83 
     84 
     85 
     86 
     87 
     88 
     89 
     90</html> 
     91