Mudanças entre as edições de "Manual do Desenvolvedor"
De Grupo Acert
(→Regras de Nomeação) |
(→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 95: | Linha 95: | ||
== 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: | 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. < | + | * '''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. < | + | * '''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: | + | * '''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: |
− | {| border=1 cellpadding= | + | <blockquote> |
+ | {| border=1 cellspacing=0 cellpadding=5 | ||
|- | |- | ||
! Prefixo | ! Prefixo | ||
Linha 123: | Linha 122: | ||
| Métodos que fazem teste e retornam um valor booleano | | 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 232: | 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 |