Anexo VI – SOF 46/11 Normas e Padrões para Programação em J2EE Versão: 1.00 Aplicações WEB Normas e Padrões para Programação em J2EE Índice 1. Introdução ................................................................................................................................................................................................. 1.1. Objetivo .............................................................................................................................................................................................. 1.2. Escopo ............................................................................................................................................................................................... 1.3. Definições, Acrônimos e Abreviações ................................................................................................................................................ 1.4. Referências ........................................................................................................................................................................................ 2. Normas de Padrões para Programação em J2EE .................................................................................................................................... 2.1. Extensão de Arquivo .......................................................................................................................................................................... 2.2. Organização de Arquivos ................................................................................................................................................................... 2.2.1. Arquivos Fonte do Java ............................................................................................................................................................... 2.3. Identação............................................................................................................................................................................................ 2.4. Comentários ....................................................................................................................................................................................... 2.5. Declaração ......................................................................................................................................................................................... 2.5.1. Declaração por linha ................................................................................................................................................................... 2.6. Sentenças .......................................................................................................................................................................................... 2.6.1. Sentença de Retorno .................................................................................................................................................................. 2.7. Espaço em Branco ............................................................................................................................................................................. 2.7.1. Linhas em branco ........................................................................................................................................................................ 2.8. Convenção de Nomes ........................................................................................................................................................................ 2.8.1. Pacotes ....................................................................................................................................................................................... 2.8.2. Classes e Interfaces .................................................................................................................................................................... 2.8.3. Métodos .....................................................................................................................................................................................1 2.8.4. Constantes .................................................................................................................................................................................1 2.8.5. Variáveis ....................................................................................................................................................................................1 2.8.6. Arquivos .....................................................................................................................................................................................1 2.9. Práticas de Programação ..................................................................................................................................................................1 2.9.1. Práticas variadas ........................................................................................................................................................................1 3. Controle de Alterações do Documento.....................................................................................................................................................1 Página 2 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE Normas e Padrões para Programação em J2EE 1. Introdução 1.1. Objetivo A finalidade do documento é definir normas e padrões para programação em J2EE. 1.2. Escopo Este documento descreve um conjunto de padrões, convenções e diretrizes para escrever um código em J2EE. 1.3. Definições, Acrônimos e Abreviações 1.4. Referências Página 3 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2. Normas de Padrões para Programação em J2EE 2.1. Extensão de Arquivo Devem ser usadas as seguintes extensões de arquivos de J2EE. Tipo de Arquivo Extensão Código Fonte Java .java Bytecode .class Extensible Markup Language .xml Hypertext Markup Language .html Java Server Page .jsp Tag Library Descriptor .tld Arquivo de Propriedades .properties Arquivo de Imagem .gif Folha de Estilos em Cascata .css Script do JScript .js Java Archive .jar Web Archive .war Enterprise Archive .ear Projeto do JDeveloper .jpr WorkSpace do JDeveloper .jws Página 4 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2.2. Organização de Arquivos Os arquivos são separados por linhas em branco e por um comentário opcional que identifica cada seção. 2.2.1. Arquivos Fonte do Java Os arquivos fonte do Java devem ter um comentário inicial. Indicações de Pacotes e Importações – A primeira linha de um arquivo fonte do Java é a indicação do pacote, e em seguida vem as indicações de import e após isso o comentário. package br.gov.trt.regiao1.basico.modelo.advogado.dominio; import br.gov.trt.regiao1.basico.modelo.advogado.persistencia; Declaração de Classe e Interface - As partes de uma declaração da classe ou da interface, devem aparecer na seguinte ordem: - Indicação do pacote - Indicação do(s) import(s) - Comentário da documentação de Classe/Interface (/**...*/) - Indicação da Classe ou da Interface - Comentário (/*...*/), da execução de Class/interface se necessário - Variáveis da classe (estática) 2.3. Identação Quatro espaços devem ser usados como a unidade de identação. São evitadas linhas com mais de 80 caracteres, geralmente são usados 70 caracteres. Quando uma expressão ultrapassar uma linha, será quebrada de acordo com os princípios abaixo: - Quebra após uma vírgula; - Quebra antes de um operador; - Quebras maiores são mais usadas que as menores; - A linha nova é alinhada com o começo da expressão no mesmo nível na linha precedente; - Se as quebras acima tornarem o código confuso, serão usados apenas 8 espaços como quebra. 2.4. Comentários Informações sobre como o pacote correspondente é construído ou em que diretório reside não são incluídas como comentário. São realizadas discussões de decisões do projeto, pois evita a duplicação de informação no código. Se houver a necessidade de muitos comentários em um código, o mesmo será reescrito. Os comentários não devem ser incluídos em caixas grandes com os asteriscos ou os outros caracteres. Os comentários nunca devem incluir caracteres especiais tais como backspace. Página 5 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2.5. Declaração 2.5.1. Declaração por linha int level; // nível de identação int size; // tamanho da tabela Página 6 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2.6. Sentenças 2.6.1. Sentença de Retorno return; return myDisk.size(); return (size ? size : defaultSize); Página 7 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2.7. Espaço em Branco 2.7.1. Linhas em branco - Duas linhas em branco são usadas entre seções de um arquivo fonte e entre definições de classe e interface. - Uma linha em branco é usada entre métodos, entre as variáveis locais de um método e sua primeira sentença, antes de um bloco ou comentário e entre seções lógicas dentro de um método para melhorar a legibilidade. Página 8 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2.8. Convenção de Nomes 2.8.1. Pacotes Regra <prefixo_pacote>.<nome_subsistema>.<nome_camada>.<nome_variável>[.<nome_papel>] Explicação <prefixo_pacote> br.gov.trt.regiao1 <nome_subsistema> nome de um dos subsistemas do SAP <nome_camada> controle; modelo <nome_variável> nome do pacote, onde todas as letras devem ser minúsculas. <nome_papel> servico; [impl] dominio; persistencia; Exemplo br.gov.trt.regiao1.basico.controle.advogado; br.gov.trt.regiao1.basico.modelo.advogado.servico; br.gov.trt.regiao1.basico.modelo.advogado.servico.impl; br.gov.trt.regiao1.basico.modelo.advogado.dominio; br.gov.trt.regiao1.basico.modelo.advogado.persistencia; br.gov.trt.regiao1.basico.modelo.advogado.servico; 2.8.2. Classes e Interfaces Classes Padrão Regra Exemplo Action <nome_variável><ação>Action AdvogadoManterAction Business Delegate <nome_variável>Delegate AdvogadoDelegate Sessions Façade <nome_variável>ServiceBean AdvogadoServiceBean Application Service <nome_variável>AppService AdvogadoAppService Business Object <nome_variável>BO AdvogadoBO Data Transfer Object <nome_variável>DTO AdvogadoDTO DAO <nome_variável>DAOHibernate AdvogadoDAOHibernate Interfaces Padrão Regra Exemplo Página 9 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE Interfaces Padrão Regra Exemplo EJBLocal <nome_variável>ServiceLocal AdvogadoServiceLocal EJBLocalSessionHome <nome_variável>ServiceLocalHome AdvogadoServiceLocalHome EJBRemote <nome_variável>Service AdvogadoService EJBSessionHome <nome_variável>ServiceHome AdvogadoServiceHome 2.8.3. Métodos Os nomes dos métodos são sempre verbos. De acordo com o objetivo do método, o verbo usado no nome do método deve ser definido seguindo a tabela abaixo: Objetivo do Método Objetivo Exemplo salvar Incluir / atualizar registro salvarAdvogado() remover Excluir registro removerAdvogado() buscarPorChave Retorna um único registro pelo identificador buscarAdvogadoPorChave() buscarPor<nome_variável> Retorna registros baseado em um critério de buscarAdvogadoPorNome() seleção buscarPorFiltro Retorna um registro baseado em um ou mais buscarAdvogadoPorFiltro() critérios de seleção, esse método é usado para as páginas de filtro 2.8.4. Constantes Regra NOME_DA_CONSTANTE Explicação O nome de constantes deve ser sempre definido com letras maiúsculas e palavras separadas por “_”. Exemplo static final int ADVOGADO_DAO = 1; Página 10 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2.8.5. Variáveis Regra <nome_variável> Explicação <nome_variável> nome da variável, onde somente a primeira letra de cada palavra do nome deve ser maiúscula. Exemplo int numeroOAB; 2.8.6. Arquivos Objetivo do Arquivo Regra Exemplo Página JSP <nome_variável><Função>.jsp advogadoManter.jsp Arquivo de Propriedade Recursos<nome_variável>.properties RecursosAdvogado.properties struts-config struts-config-<nome-variável>.xml struts-config-advogado.xml Página 11 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 2.9. Práticas de Programação 2.9.1. Práticas variadas Parênteses - São usados parênteses nas expressões que envolvem operadores misturados para evitar problemas da precedência de operador. if (a == b && c == d) // EVITE if ((a == b) && (c == d)) // USE Página 12 de 13 Aplicações WEB Normas e Padrões para Programação em J2EE 3. Controle de Alterações do Documento Versão 1.0 Descrição Elaboração do documento Data 30/08/2005 Responsável Eric Sander Página 13 de 13