Mudanças entre as edições de "Manual do Desenvolvedor"
De Grupo Acert
(→Organização dos projetos) |
|||
Linha 26: | Linha 26: | ||
'''Protected''' - Somente métodos declarados na classe, ou qualquer subclasse, ou qualquer classe existente no mesmo pacote poderão acessar. | '''Protected''' - Somente métodos declarados na classe, ou qualquer subclasse, ou qualquer classe existente no mesmo pacote poderão acessar. | ||
− | '''--Default --''' Somente métodos declarados na classe ou qualquer classe que esteja no mesmo pacote. O uso do default se faz pela ausência de qualquer keyword para especificar visibilidade. | + | '''-- Default --''' Somente métodos declarados na classe ou qualquer classe que esteja no mesmo pacote. O uso do default se faz pela ausência de qualquer keyword para especificar visibilidade. |
'''Public''' - Todas as classes podem acessar. | '''Public''' - Todas as classes podem acessar. | ||
Linha 43: | Linha 43: | ||
Em seguida, tem-se a declaração do nome da classe que faz parte da codificação do sistema. | Em seguida, tem-se a declaração do nome da classe que faz parte da codificação do sistema. | ||
− | |||
<pre> | <pre> | ||
/** | /** | ||
− | * Descrição da classe | + | * Descrição da classe. |
* | * | ||
* Exemplo de uso: | * Exemplo de uso: | ||
− | * | + | * <pre> |
− | * algum Código | + | * algum Código |
− | * | + | * </pre> |
* | * | ||
* Limitações: | * Limitações: | ||
Linha 57: | Linha 56: | ||
* @author <nome do autor> | * @author <nome do autor> | ||
* @version <versão da classe> | * @version <versão da classe> | ||
− | * @see br. | + | * @see br.exemplo.Componente |
*/ | */ | ||
</pre> | </pre> | ||
− | |||
== Documentação de um método == | == Documentação de um método == | ||
Linha 68: | Linha 66: | ||
Exemplo: | Exemplo: | ||
+ | <pre> | ||
/** | /** | ||
− | * Consulta dados de pessoa física. | + | * Consulta dados de pessoa física. |
− | * | + | * |
− | * @param | + | * @param |
− | * @return | + | * CPF CPF da pessoa a ser consultada. |
− | * | + | * @return |
− | * @throws IOException Indica que os dados passados são | + | * Entidade PessoaFisica. |
− | + | * @throws | |
− | * @throws ClassNotFoundException Indica que a classe PessoaFisica | + | * IOException Indica que os dados passados são inválidos. |
− | + | * @throws | |
− | */ | + | * ClassNotFoundException Indica que a classe PessoaFisica não foi encontrada. |
− | public PessoaFisica consultaPorCPF (String CPF) throws IOException, | + | * @see br.exemplo.PessoaFisica |
− | ClassNotFoundException { | + | */ |
− | + | public PessoaFisica consultaPorCPF(String CPF) throws IOException, ClassNotFoundException { | |
− | return pessoaFisica; | + | ... |
+ | return pessoaFisica; | ||
} | } | ||
+ | </pre> | ||
== Documentação de uma sessão do código == | == Documentação de uma sessão do código == | ||
Linha 95: | Linha 96: | ||
== Regras de Nomeação == | == Regras de Nomeação == | ||
− | + | O Java não tem limite para o nome de classes, métodos ou variáveis. Seguem algumas regras a serem adotadas para compor os nomes: | |
+ | |||
+ | * '''Constantes:''' use sempre letras maiúsculas separando os nomes por underscore. Por exemplo: MAX_VALUE. O nome da constante deve ser claro e sua definição deve pertencer a uma classe cujo objetivo tenha afinidade com a função da constante. Também é utilizada a regra para utilização dos tipos enumerados. <p> Nota: Constantes são variáveis para serem definidas como final e static. Em geral as constantes devem ser utilizadas para representar literais.</p> | ||
+ | |||
+ | * '''Variáveis privadas e parâmetros:''' utilize letras minúsculas para o primeiro nome. Os nomes devem estar em português e fazer sentido para a função da variável. Eles serão compostos de tantos nomes quanto forem necessários emendados entre si (sem espaços) e sem utilizar o underscore (_) respeitando um máximo de não mais de 30 caracteres. Não use nomes abreviados. <p> Nota: O nome da variável deve ser totalmente legível.</p> | ||
+ | |||
+ | * '''Métodos:''' use letra minúscula no primeiro nome. Os nomes devem estar em português e fazer sentido para o objetivo do método. Eles serão compostos de tantos nomes quanto forem necessários emendados entre si (sem espaços) e sem utilizar o underscore (_). Não use nomes abreviados. A utilização do português como padrão se excetua na utilização de prefixos já comumente utilizados em programas e que tem um contexto já bem definido como por exemplo: | ||
+ | |||
+ | <blockquote> | ||
+ | {| border=1 cellspacing=0 cellpadding=5 | ||
+ | |- | ||
+ | ! Prefixo | ||
+ | ! Função | ||
+ | |- | ||
+ | | get | ||
+ | | Para acessors de leitura de variáveis de classes. | ||
+ | |- | ||
+ | | set | ||
+ | | Para acessors de gravação de variáveis de classes. | ||
+ | |- | ||
+ | | on | ||
+ | | Utilizado para indicar métodos que possuem a funcionalidade de se comportar como eventos | ||
+ | |- | ||
+ | | is | ||
+ | | Métodos que fazem teste e retornam um valor booleano | ||
+ | |} | ||
+ | </blockquote> | ||
+ | |||
+ | * '''Classes e interface:''' use letra maiúscula na primeira letra do nome. Use nomes descritivos. Para interfaces, o nome deve possuir o prefixo I (letra i maíucula) | ||
+ | |||
+ | <blockquote> | ||
+ | {| border=1 cellspacing=0 cellpadding=5 | ||
+ | ! Sufixo | ||
+ | ! Função | ||
+ | |- | ||
+ | | DAO | ||
+ | | Para classes de acesso ao banco de dados | ||
+ | |- | ||
+ | | BO | ||
+ | | Para classes de regras de negócio Business Object | ||
+ | |- | ||
+ | | APS | ||
+ | | Para classes que implementam os casos de uso (Application Services) | ||
+ | |- | ||
+ | | Bean | ||
+ | | Para o serviço (ou comumente bean) | ||
+ | |- | ||
+ | | Remote | ||
+ | | Para a interface remota do Bean | ||
+ | |- | ||
+ | | BD | ||
+ | | Para classes cuja função seja de Busines Delegate action Para as classes que tem o papel de actions da camada de apresentação | ||
+ | |} | ||
+ | </blockquote> | ||
+ | |||
+ | * '''Packages:''' use letras minúsculas em todos os nomes. | ||
+ | |||
+ | * '''Outros objetos:''' os nomes devem estar sempre com todos os caracteres minúsculos. | ||
+ | |||
+ | <blockquote> | ||
+ | {| border=1 cellspacing=0 cellpadding=5 | ||
+ | ! Extensão | ||
+ | ! Função | ||
+ | |- | ||
+ | | .java | ||
+ | | Classes java no formato de código-fonte | ||
+ | |- | ||
+ | | .properties | ||
+ | | Arquivos de propriedades | ||
+ | |- | ||
+ | | .class | ||
+ | | Classes java no formato de código-objeto | ||
+ | |- | ||
+ | | .jsp | ||
+ | | Páginas de código web para apresentação da aplicação | ||
+ | |- | ||
+ | | .xml | ||
+ | | Arquivos no formato XML | ||
+ | |} | ||
+ | </blockquote> | ||
== Expressões e Sentenças == | == Expressões e Sentenças == | ||
Linha 113: | Linha 193: | ||
Exemplo | Exemplo | ||
+ | <pre> | ||
package com.acme.dados; | package com.acme.dados; | ||
+ | |||
import java.util.ArrayList; | import java.util.ArrayList; | ||
+ | |||
public class PessoaFisicaHelper { | public class PessoaFisicaHelper { | ||
− | public static ArrayList colecao = new ArrayList (); // NÃO FAZER | + | public static ArrayList colecao = new ArrayList (); // NÃO FAZER |
− | public void add(Pessoa p) { | + | |
− | colecao.add(p); // pessoa nunca mais será liberado | + | public void add(Pessoa p) { |
+ | colecao.add(p); // pessoa nunca mais será liberado | ||
+ | } | ||
} | } | ||
+ | </pre> | ||
NOTA: Se for extremamente necessário este tipo de armazenamento, limitar a quantidade de objetos armazenados. Este tipo de necessidade deve ser avisado e planejado antecipadamente. | NOTA: Se for extremamente necessário este tipo de armazenamento, limitar a quantidade de objetos armazenados. Este tipo de necessidade deve ser avisado e planejado antecipadamente. | ||
Linha 181: | Linha 267: | ||
Como definição, a utilização de break será permitida em estruturas switch. E em estruturas de laço (for) com teste de saída. Por exemplo: | Como definição, a utilização de break será permitida em estruturas switch. E em estruturas de laço (for) com teste de saída. Por exemplo: | ||
− | for(int i=0;i<ponto; i++){ | + | <pre> |
− | if(item[i] == | + | for(int i = 0; i < ponto; i++) { |
− | resposta = item[i]; | + | if(item[i] == "A") { |
− | break; | + | resposta = item[i]; |
− | } | + | break; |
+ | } | ||
} | } | ||
+ | </pre> | ||
== Não utilizar blocos catch com corpo vazio == | == Não utilizar blocos catch com corpo vazio == | ||
Linha 197: | Linha 285: | ||
Como boa prática manter sempre uma sentença (statement) por linha em um programa. | Como boa prática manter sempre uma sentença (statement) por linha em um programa. | ||
+ | |||
+ | == Organização dos projetos == | ||
+ | |||
+ | '''Nome de projeto:''' o nome do projeto deve estar em minúsculo e composto pela funcionalidade e módulo. | ||
+ | |||
+ | Exemplo: | ||
+ | |||
+ | * logs-core | ||
+ | * logs-view | ||
+ | * hibernate-core | ||
+ | |||
+ | '''Nome de pacotes:''' o nome do pacote deve se composto pela funcionalidade, módulo e recursos. | ||
+ | |||
+ | Exemplo: | ||
+ | |||
+ | * logs.core | ||
+ | * logs.core.model | ||
+ | * logs.core.view | ||
+ | * logs.core.control | ||
+ | * logs.core.util | ||
+ | * logs.core.properties | ||
+ | |||
+ | '''Estrutura de pacotes para testes unitários e funcionais:''' devem estar no diretório ''src-test'' | ||
+ | |||
+ | Exemplo: | ||
+ | |||
+ | * logs.core.test | ||
+ | * logs.core.test.model | ||
+ | * logs.core.test.view | ||
+ | * logs.core.test.control | ||
+ | * logs.core.test.util | ||
+ | * logs.core.test.properties | ||
+ | |||
+ | |||
+ | '''Estrutura de diretórios:''' estrutura de diretórios de um projeto web. | ||
+ | |||
+ | : '''<funcionalidade-modulo>''' | ||
+ | :: '''build''' | ||
+ | ::: '''producao''' - diretório contendo as configurações do ambiente de produção | ||
+ | :::: '''empresa_x''' - configurações específicas da empresa x | ||
+ | :::: '''empresa_y''' - configurações específicas da empresa y | ||
+ | ::: '''homologacao''' - diretório contendo as configurações do ambiente de homologação | ||
+ | :::: '''empresa_x''' - configurações específicas da empresa x | ||
+ | :::: '''empresa_y''' - configurações específicas da empresa y | ||
+ | ::: '''teste''' - diretório contendo as configurações do ambiente de testes | ||
+ | :::: '''empresa_x''' - configurações específicas da empresa x | ||
+ | :::: '''empresa_y''' - configurações específicas da empresa y | ||
+ | :: '''src''' - diretório contendo os arquivos fontes do projetos | ||
+ | :: '''src-test''' - contendo os testes unitários e funcionais | ||
+ | :: '''WebContent''' | ||
+ | ::: '''resources''' - diretório contendo imagens, scripts e folha de estilos | ||
+ | ::: '''WEB-INF''' | ||
+ | :::: '''relatorios''' - arquivos .jasper | ||
+ | :::: '''paginas''' - arquivos .jsp/.xhtml/.html/.ftl | ||
+ | ::: '''META-INF''' | ||
+ | ::: arquivos .swf |