O Google liberou recentemente sua lista completa de definições de padrões de código para código-fonte Java. São regras definitivas sobre código Java que devem ser seguidas universalmente dentro do Google. Esta lista contempla formatação de código assim como outros tipos de convenções e padrões de código.
O documento é divido em seis seções principais: Fundamentos de Arquivos Fonte, Estrutura de Arquivo Fonte, Nomenclatura, Práticas de Programação e Javadoc. A seção de Fundamentos de Arquivos Fonte fala sobre nomes e codificação de arquivos, caracteres de espaço e caracteres especiais. A seção sobre Estrutura de Arquivos Fonte fala sobre informação de licença, declarações de pacotes e import e ordem de membros de uma classe. A seção de Formatação discute sobre chaves, indentação, tamanho da linha, espaços em branco, parênteses, enums, vetores, declarações de switch, anotações, comentários e modificadores. A seção sobre Nomenclatura fala sobre identificadores (pacote, classe, método, constante, campo, variáveis locais, tipos de variável) e CamelCase. A seção sobre Práticas de Programação fala sobre @Override, exceções, membros estáticos e finalizers. A seção sobre Javadoc fala sobre como formatar o Javadoc e onde ele é necessário.
Abaixo segue alguns itens presentes no guia:
- Nenhuma declaracão de importação com coringas;
- Sobrecargas aparecem em sequência;
- Chaves são usadas mesmo quando o corpo do código é vazio ou contém somente uma declaração;
- Indentação com dois espaços;
- O limite de colunas são de 80 à 100 caracteres;
- Sem declarações de vetores no estilo C;
- A declaração default no switch é obrigatória;
- Modificadores aparecem na ordem recomendada pela Especificação da Linguagem Java;
- Constantes usam LETRAS_MAIÚSCULAS. Note que toda constante é um campo final e estático, porém nem todos os campos finais e estáticos são constantes.
Para uma leitura completa, leia o Google Java Style. Também existe o guia oficial Convenções de Código para a Linguagem de Programação Java da Oracle. O Google também possui guias de estilo para outras linguagens como C++, Objective-C, Python, Sheel, HTML/CSS, JavaScript e Lisp.