segunda-feira, 5 de setembro de 2016

[JAVA] Convenções de nomenclatura


Fala galera que a acompanha o blog...

Nesse post vou falar um pouco sobre algumas regras e convenções adotadas quando estamos trabalhando com a linguagem de programação Java. É importante deixar claro que estas convenções não atrapalham o desempenho do seu código, ou a interpretação do seu código para o compilador. Elas estão relacionadas a legibilidade do código, facilidade de enter o código e em muitos casos podem ser utilizadas como uma documentação do projeto.


Convenções de nomenclatura


Embora esse post se torne trivial a medida que vamos programando e ganhando experiência e nos acostumando com as nomenclaturas adotadas, é muito importante que as regras e nomenclaturas sejam respeitadas, possibilitando que qualquer desenvolver, mesmo com pouco conhecimento em Java, possa facilmente identificar métodos, classes, atributos e constantes, e utilizar/refatorar seu código de forma eficiente.

Muitos compiladores, entre eles Eclipse e NetBeans, dão um grande auxilio durante o desenvolvimento do nosso projeto, nos informando sobre as convenções de nomenclatura no momento de criação de pacotes, classes, atributos...

Abaixo utilizarem bastante a expressão CamelCase, e já adiantarei a explicação:
CamelCase é uma expressão em inglês para a prática de escrever frase ou palavras compostas, onde cada palavra é iniciada com letra maiúscula e unidas sem espaços. É utilizada em várias linguagens de programação e por ser associada a tecnologia, o marketing se apropriou dessa maneira de escrever para criar produtos e serviços como: StarCraft, iPod, OpenOffice e muitos outros. O sentido do termo CamelCase se dá pelo fato de que as letras maiúsculas no inicio das palavras "saltam", como corcovas de um camelo.

Exemplos: DevIsComing, AtualizarBlog(), postNovo, isValid. 

Bom, vamos entender as convenções:

Nome de Pacotes

Pacotes devem começar com uma letra minúscula e jamais deve conter letras não ASCII (caracteres de língua de origem latina, como caracteres acentuados), de caracteres especiais (@, #, $, %, &, *, _, etc...) ou número.

Caso o nome do pacote seja composto por mais de uma palavra, todas as letras devem ser minusculas evitando o uso do CamelCase.

Pense nos pacotes como sendo realmente as pastas do seu computador que separam arquivos específicos que fazem sentido estarem dentro daquela pasta/pacote.
Para um pacote com.devic.usuario, não faria sentido nenhum ter uma classe chamando SalvaHistoricoCompra, espera-se que dentro do pacote mencionado exista classes como Login, Logout, CarregaUsuario...

Pacotes também são muito importantes quando possuímos classes de mesmo nome. Imagine que em um projeto onde você tenha uma classe chamada ConverteData que possui uma implementação, seu amigo de projeto também criou a mesma classe ConverteData, para um outro propósito e alguma biblioteca que você esteja usando em seu projeto também possua a classe ConverteData.
Essas classes nunca poderiam ser criadas em um mesmo pacote, assim como dois arquivos do mesmo tipo e extensão não podem ser criados dentro da mesma pasta. Dessa forma os pacotes facilitam a separação, sendo possível realizar a importação do pacote especifico que se deseja utilizar.

Nome de Classes


Toda classe DEVE começar com uma letra maiúscula e, de preferencia, não devem conter letras ASCII (caracteres de língua de origem latina, como caracteres acentuados), caracteres especiais (@, #, $, %, &, *, _, etc...) ou número.

Caso o nome da classe seja composto por mais de uma palavra, deve-se adotar o "padrão" CamelCase.

As classes devem ser vistas como o agrupamento de objetos com a mesma estrutura de dados, é uma abstração ou definições de coisas do mundo real.
Exemplo: Pessoa, Carro, Animal, PessoaJuridica.


Nome de atributos ou variáveis


Atributos (variáveis) podem começar com qualquer letra ou com os caracteres $ ou_, porém não devem começar com números.

Caso o nome do atributos seja composto por mais de uma palavra, deve-ser adotar o "padrão" CamelCase.

A definição e diferença entre atibuto e variavel, você pode encontrar aqui.
Exemplo: nome, endereco, isValido, orgaoTecnico.


Nome de atributos finais ou constantes


Os atributos finais (constantes) devem ser escritos em letra maiúscula;

Caso o nome do atributo final seja composto por mais de uma palavra, utilizamos o underline (_) para separar uma palavra da outra.

Exemplo: BASE_CALCULO, FIND_BY_ID.

Nesse post vimos algumas regras e convenções de nomenclatura que foram adotadas pra a linguagem java, essa convenção muda de uma linguagem para outra (mesmo que não totalmente). Se você está começando agora a programar em java, não se preocupe em decorar essas convenções, com o tempo (e em pouco tempo) você estará, de forma natural, adotando essas convenções no seu código.

É isso ai pessoal, até a próxima!
Luiz Fagner Zordan Analista de Sistemas

Graduado em Sistemas de Informação, atualmente trabalhando na Embraer pela FocusNetworks como FullStack. Sou apaixonado por tecnologia, fascinado por jogos e adoro passar o tempo assistindo séries.