Convenções de Nomeação Java para Delphiano

14/11/2013 at 23:06

Pelo que tenho visto, observando e escrevendo código Delphi desde 1999, os programadores dessa linguagem (inclusive eu) não são muito ligados a convenções de nomeação. Mesmo porque, Delphi é case-insensitive o que desestimula por parecer um esforço desnecessário.

O programador Delphi que quer programar em Java deve mudar esse hábito, pois a plataforma Java tem um conjunto bem estabelecido de convenções de nomeação para aplicações, módulos, pacotes, classes, interfaces, anotações, tipos genéricos, métodos, campos, variáveis e constantes. Raramente esses padrões devem ser violados e nunca sem uma boa razão. Segue as consequências de violar essas convenções.

  • A IDE não entende e não ajuda o code-completion
  • API fica difícil de ser utilizada
  • API fica difícil de ser alterada
  • Confundir e irritar os programadores usuário da API
  • Podem causar suposições falsas resultando em erros

O único padrão de nomenclatura bem definido que observei em Delphi foi a utilização de prefixo “F” para definir variáveis do tipo field, aquelas declaradas no private da classe, esta variável geralmente é apontada no read e/ou no write do property. E o uso do prefixo “f” para nome de form.

O xhtml interage com o ManagedBean, através de convenção de nomenclatura, ou seja, se a classe chama-se CadastroCliente (note a primeira letra maiúscula – convenção de nome de classe Java), anotada com @ManagedBean, o xhtml interage com ela através da EL – Expression Language com o mesmo nome com a primeira letra minúscula, ou seja, cadastroCliente.

O xhtml “enxerga” as propriedades da classe Cliente através de convenção de nomenclatura também.

No xhtml, através da EL, escreve-se “#{cadastroCliente.item.nome}”, considerando o ManagedBean conforme abaixo.

Parece que a instrução EL acessa a variável private String nome da classe Cliente, mas na verdade está ignorando o sufixo “get” e o “set” e tratando como uma propriedade, para em tempo de execução usar esses métodos quando necessário. Portanto maiúscula e minúscula são muito importantes, bem como criar os métodos get/set.

Se for necessário é possível alterar o acesso ao ManagedBean informado a propriedade name conforme abaixo.

A instrução EL ficaria: “#{clienteMB.item.nome}”, não fazendo mais uso de convenção de nomenclatura.

Veja neste artigo, Guidelines, Patterns, and code for end-to-end Java applications as convenções para J2EE. Se o link estiver quebrado procure por esse título ou por “Java code convention”.