Os temas abordados nesse post serão:
- Nomes válidos para identificadores (nomes de classes, métodos, variáveis, etc.) na linguagem Java (baseado na versão 1.6).
- Convenções de nomenclatura dos identificadores.
- Padrões JavaBeans.
1 - Nomes válidos para identificadores
- Iniciam por letras, $(cifrão) ou _(underscore). Numca iniciam por números.
- Após a primeira letra, qualque combinação alfanumérica e dos símbolos $ e _ é válido.
- Não possuem limite de tamanho.
- Não são permitidos a utilização de palavras chave da linguagem para identificadores (ver tabela 1 para ver todas as palavras reservadas Java).
- Identificadores são case sensitive.
Nomes válidos para identificadores:
int $abc | int abc | int _abc | int $ab2 | int $__$$__$$ | int $ | int _
| int _123
Nomes inválidos para identificadores:
int 2abc | int do | int ab c | int :acdc
Tabela 1(Retirada da documentação da Oracle)
abstract | continue | for | new | switch |
assert *** | default | goto * | package | synchronized |
boolean | do | if | private | this |
break | double | implements | protected | throw |
byte | else | import | public | throws |
case | enum **** | instanceof | return | transient |
catch | extends | int | short | try |
char | final | interface | static | void |
class | finally | long | strictfp ** | volatile |
const * | float | native | super | while |
* | não utilizado | |
** | adicionado na versão 1.2 | |
*** | adicionado na versão 1.4 | |
**** | adicionado na versão 5.0 |
As palavras
true
, false
e null
podem parecer palavras chave, mas eles são realmente literais, que são as representações de dados dentro do código fonte.
2 - Convenções de nomenclatura dos identificadores.
2.1 - Classes e Interfaces
As classes e interfaces tem o seguinte padrão de nomenclatura:
- A primeira letra deve ser maíscula. Se mais de uma palavra formam o nome, a primeira letra de cada palavra deve ser maíscula. Esse padrão de escrita é conhecimento como CamelCase.
- Para classes, os nomes são tipicamente substantivos enquando para interfaces são adjetivos.
Exemplos de nomes de classes:
Carro
AstonMartin
Bicicleta
Exemplos de nomes de interfacesConversivel
Motorizado - A classe ou interface deve ter o mesmo nome do arquivo fonte. Por exemplo, um arquivo fonte chamado Carro.java, deve conter a classe
Carro
.
2.2 - Métodos
Os métodos das classes e interfaces possuem o padrão abaixo:
- A primeira letra deve ser minúscula, e as demais palavras que compõe o nome do método seguem o padrão camelCase. Além disso, os nomes normalmente devem ser pares de verbos e substantivos.
- Exempos de nomes de métodos:
getVelocidadeAtual
trocarMarcha
reduzirVelocidade
O padrão de nomenclatura de váriaveis é:
- Assim como nos métodos, a primeira letra é minúscula e segue o padrçao camelCase para as demais palavras que compõem o identificador.
- A Oracle recomenda que esses nomes sejam curtos e significativos, e que soe bom para nós.
- Alguns exemplos de nomes de variáveis:
velocidadeAtual
velocidadeMaxima
capacidadeTanque
qtdeGasolinaDisponivel
A especificação JavaBeans se destina a ajudar os desenvolvedores a criar componentes Java que podem ser facilmente utilizados por outros desenvolvedores em uma ferramenta de desenvolvimento integrado (IDE's como o Eclipse ou NetBeans).
JavaBeans são classes Java que possuem atributos(variáveis) de escopo privado, e para que possamos acessá-las através de outras classes eles devem ter métodos públicos que nos forneçam este acesso. Os métodos que retornam o valor desses atributos são chamados de métodos getters, e os métodos que nos permitem alterar o valor desses atributos são chamados de métodos setters.
As regras de nomenclatura são as seguintes:
- Se a variável não é do tipo
boolean
, o método getter dela deve começar com o prefixo get, se for booleano deve começar com is. Esses métodos possuem valor de retorno e não recebem parâmetros, sendo o tipo de retorno igual ao da variável que se deseja obter o valor. Por exemplo,public double getVelocidadeMaxima
() é um método getter válido para uma variáveldouble velocidadeMaxima
, não sendo obrigatorio que você tenha uma variávelvelocidadeMaxima
. Para uma variável do tipobooleano
, um método getter válido seriaisVeiculoEsportivo
. - Os métodos setters são iguais para todos os tipos de variáveis. Iniciam sempre pelo prefixo set. Métodos setters não possuem valor de retorno e recebem por parâmetro uma variável do mesmo tipo do atributo existente na classe. Por exemplo, para a variável
double velocidadeMaxima
, um método setter válido seriapublic void setVelocidadeMaxima(double velocidadeMaxima)
. - Esses métodos tem por modificar de acesso
public
. - A especificação JavaBeans traz suporte a eventos, o que permite que componentes informem uns aos outros quando alguma coisa ocorre através de listeners. Eventos são amplamente utilizados em aplicações Desktop, por exemplo para que componentes sejam informados quando um clique num botão da tela ou do mouse ocorre.
- O padrão de nomenclatura de eventos é a seguinte. Para registrar os listeners, deve ser utilizado o prefixo
add
seguido do nome do listener. Por exemplo, um listener para saber quando o nível de óleo estiver baixo teria a seguinte assinaturapublic void addAvisoNivelDeOleoListener
- O nome do listener sempre deve terminar por
Listener
. Exemplos:AvisoPortaAbertaListener, GasolinaNaReservaListener
. - Para remover um listener, o padrão é usar o prefixo remove acompanhado do seu nome. Por exemplo, para remover o listener que avisa sobre o nível de óleo, a assinatura do método seria
removeAvisoNivelDeOleoListener
. - O tipo de listener a ser adicionado ou removido, é o tipo passado por parâmetro ao método.
public class Veiculo {
private Integer velocidade;
private String nomeCarro;
private List acessorios;
private boolean conversivel;
//Métodos getters
public Integer getVelocidade(){
return velocidade;
}
public String getNomeCarro(){
return nomeCarro;
}
public List getAcessorios(){
return acessorios;
}
public boolean isConversivel(){
return conversivel;
}
//Métodos setters
public void setVelocidade(Integer velocidade){
this.velocidade = velocidade;
}
public void setNomeCarro(String nomeCarro){
this.nomeCarro = nomeCarro;
}
public void setAcessorios(List acessorios){
this.acessorios = acessorios;
}
public void setConversivel(boolean conversivel){
this.conversivel = conversivel;
}
//Listeners
public void addAvisoNivelDeOleoListener
(AvidoNivelGasolinaListener listener){
//...código a ser executado quando evento ocorrer
}
public void removeAvisoNivelDeOleoListener
(AvidoNivelGasolinaListener listener){
//...código a ser executado
}
}
Material de referência:
Oracle Keywords
Especificação JavaBeans
Java Code Conventions
Guia de estudo para certificação OCJP