Convenções de nomenclatura do Java

As convenções de nomenclatura do Java são uma espécie de diretrizes que os programadores de aplicativos são esperados a seguir para produzir código consistente e legível ao longo de toda a aplicação. Caso as equipes não adotem essas convenções, podem acabar escrevendo coletivamente um código de aplicativo que é difícil de ler e entender.

Sempre tente dar nomes descritivos e concisos a todas as variáveis. Como resultado, qualquer programador apreciará seu código por um longo tempo. Programadores experientes dedicam muito cuidado à nomeação para tornar seus programas fáceis de entender.

O Java usa amplamente as notações Camel Case para nomear os métodos, variáveis, etc., e notações Title Case para classes e interfaces.

Existem duas convenções Java geralmente aceitas e utilizadas em todo o mundo:

Convenções de Código da Oracle 
Guia de Estilo do Google

Vamos entender algumas convenções de nomenclatura comumente usadas e populares em detalhes, com exemplos.

Nomenclatura de Pacotes

Os nomes de pacotes devem ser um grupo de palavras começando com nomes de domínio em minúsculas (por exemplo, com, org, net, etc). As partes subsequentes do nome do pacote podem ser diferentes de acordo com as próprias convenções de nomenclatura interna de uma organização.

package com.cpj.webapp.controller;
package com.company.myapplication.web.controller;
package com.google.search.common;

Nomenclatura de Classes

Em Java, os nomes das classes geralmente devem ser substantivos, em maiúsculas com a primeira letra de cada palavra separada capitalizada.

public class ArrayList {}
public class Employee {}
public class Record {}
public class Identity {}

Nomenclatura de Interfaces

Em Java, os nomes de interfaces, geralmente, devem ser adjetivos. As interfaces devem estar em maiúsculas com a primeira letra de cada palavra separada capitalizada. Em alguns casos, as interfaces também podem ser substantivos quando apresentam uma família de classes, por exemplo, List e Map.

public interface Serializable {}
public interface Clonable {}
public interface Iterable {}
public interface List {}

Nomenclatura de Métodos

Os métodos devem sempre ser verbos. Eles representam ação e o nome do método deve claramente indicar a ação que eles realizam. O nome do método pode ser de uma ou duas a três palavras, conforme necessário, para representar claramente a ação. As palavras devem estar em notação Camel Case.

public Long getId() {}
public void remove(Object o) {}
public Object update(Object o) {}
public Report getReportById(Long id) {}
public Report getReportByName(String name) {}

Nomenclatura de Variáveis

Todos os nomes de variáveis de instância, estáticas e de parâmetros de método devem estar em notação Camel Case. Além disso, eles devem ser curtos o suficiente para descrever seu propósito. Por exemplo, variáveis temporárias podem ser um único caractere, como o contador nos loops. Adicionalmente, Java tem algumas regras específicas para nomear variáveis: os nomes são sensíveis a maiúsculas e minúsculas; um nome pode incluir letras Unicode, dígitos e dois caracteres especiais ($, _); um nome não pode começar com um dígito. Além disso, um nome não deve ser uma palavra-chave (como class, static, int, etc., que são nomes ilegais), e espaços em branco não são permitidos no nome de uma variável.

public Long id;
public EmployeeDao employeeDao;
private Properties properties;
for (int i = 0; i < list.size(); i++) {
}

E aqui estão alguns inválidos:

@ab, 1c, !ab, class

Desde o Java 9, o caractere único _ é um nome inválido para uma variável, mas _a e __ (um duplo _) são nomes legais. Escolha sempre um nome que faça sentido, por exemplo, score faz mais sentido do que s, embora ambos sejam válidos.

Convenções de Nomenclatura de Constantes

Em Java, deve-se escrever todas as constantes em MAIÚSCULAS e separar as palavras com o caractere de sublinhado (“_”). Certifique-se de usar o modificador final com variáveis constantes.

public final String SECURITY_TOKEN = "...";
public final int INITIAL_SIZE = 16;
public final Integer MAX_SIZE = Integer.MAX;

Nomenclatura de Tipos Genéricos

Os nomes dos parâmetros de tipo genérico devem ser letras maiúsculas únicas. Geralmente, recomenda-se usar a letra ‘T’ para tipo. Nas classes JDK, usa-se ‘E’ para elementos de coleção, ‘S’ para carregadores de serviço, e ‘K’ e ‘V’ para chaves e valores de mapa.

public interface Map<K,V> {}
public interface List<E> extends Collection<E> {}
Iterator<E> iterator() {}

Nomenclatura de Enums

Semelhante às constantes de classe, os nomes de enumerações devem ser todas em letras MAIÚSCULAS.

enum Direction {NORTH, EAST, SOUTH, WEST}

Nomenclatura de Anotações

Os nomes de anotações seguem a notação de título. Eles podem ser adjetivos, verbos ou substantivos com base nos requisitos.

public @interface FunctionalInterface {}
public @interface Deprecated {}
public @interface Documented {}
public @Async Documented {}
public @Test Documented {}

Conclusão

Neste post, discutimos as convenções de nomenclatura em Java que você deve seguir para escrever um código consistente, o que, por sua vez, o torna mais legível e fácil de manter. Além disso, provavelmente seguir as convenções de nomenclatura é a primeira melhor prática ao escrever código limpo em qualquer linguagem de programação.