Difference between revisions of "Convenções de escrita de programas em Java"

From Wiki**3

(Cuidados na representação gráfica)
 
(20 intermediate revisions by the same user not shown)
Line 1: Line 1:
Embora a linguagem Java tenha uma sintaxe e semântica bem definidas, decisões há que restrigem aqueles aspectos com o fim de melhorar a escrita de programas e, assim, a sua compreensão por um eventual leitor humano. Estas decisões são relativas a convenções de escrita, especialmente no que respeita a nomes de entidades que figuram num program. São as denominadas convenções de codificação e são inteiramente para consumo humano, já que para a máquina (i.e., para o compilador) são meros adornos, completamente irrelevantes do ponto de vista funcional.
+
{{TOCright}}
 +
Embora a linguagem Java tenha uma sintaxe e semântica bem definidas, decisões há que restrigem aqueles aspectos com o fim de melhorar a escrita de programas e, assim, a sua compreensão por um eventual leitor humano. Estas decisões são relativas a convenções de escrita, especialmente no que respeita a nomes de entidades que figuram num programa. São as denominadas convenções de codificação e são inteiramente para consumo humano, já que para a máquina (i.e., para o compilador) são meros adornos, completamente irrelevantes do ponto de vista funcional.
  
As conveções dizem respeito a vários aspectos.
+
== Nomes ==
  
== Nomes ==
+
=== Cuidados na representação gráfica ===
 +
 
 +
Além da boa escolha de um nome, é necessário algum cuidado na sua representação gráfica.
  
 
* Constantes: todas as letras em maiúsculas; palavras separadas por "sublinhados" (underscores);
 
* Constantes: todas as letras em maiúsculas; palavras separadas por "sublinhados" (underscores);
** Exemplos <font color="green">bons</font>: <code>MASSA_DO_ELECTRÃO</code>, <code>CONSTANTE_DE_PLANK</code>
+
** Exemplos <font color="green">bons</font>: <code>MASSA_DO_ELECTRÃO</code>, <code>CONSTANTE_DE_PLANCK</code>
 
** Exemplos <font color="red">maus</font>: <code>i</code>, <code>MinhaConstante</code>, <code>_outra_constante</code>
 
** Exemplos <font color="red">maus</font>: <code>i</code>, <code>MinhaConstante</code>, <code>_outra_constante</code>
* Variáveis: há dois grupos a considerar: o primeiro corresponde a variáveis que são atributos de objectos, enquanto o segundo corresponde a variáveis locais a métodos. Apenas diferem na convenção por as primeiras serem precedidas por um "sublinhado". A convenção é que os nomes sejam iniciados por uma letra minúscula, sendo cada nova palavra do identificador marcada pelo uso de uma maiúscula:
+
* Variáveis: a convenção é que os nomes sejam iniciados por uma letra minúscula, sendo cada nova palavra do identificador marcada pelo uso de uma maiúscula:
 
** Exemplos de atributos de um objectos:
 
** Exemplos de atributos de um objectos:
*** <font color="green">bons</font>: <code>_numeroDeDentes</code>, <code>_ratómetro</code>
+
*** <font color="green">bons</font>: <code>numeroDeDentes</code>, <code>ratómetro</code>
 
*** <font color="red">maus</font>: <code>MARIA</code>, <code>CoisaEstranha</code>
 
*** <font color="red">maus</font>: <code>MARIA</code>, <code>CoisaEstranha</code>
 
** Exemplos de variáveis locais e argumentos de métodos:
 
** Exemplos de variáveis locais e argumentos de métodos:
 
*** <font color="green">bons</font>: <code>numeroDeSérie</code>, <code>i</code> (o uso de variáveis com nomes curtos deve ser limitado, tendo-se como boa a utilização como contadores de iteração)
 
*** <font color="green">bons</font>: <code>numeroDeSérie</code>, <code>i</code> (o uso de variáveis com nomes curtos deve ser limitado, tendo-se como boa a utilização como contadores de iteração)
*** <font color="red">maus</font>: <code>VARIÁVEL_LOCAL</code>, <code>número_de_série</code>, <code>número_De_Série</code>
+
*** <font color="red">maus</font>: <code>VARIÁVEL_LOCAL</code>, <code>número_de_série</code>, <code>número_De_Série</code>
 
* Classes: os nomes diferem dos das variáveis apenas por começarem por letra maiúscula.
 
* Classes: os nomes diferem dos das variáveis apenas por começarem por letra maiúscula.
 
** Exemplos: <code>RefeiçãoComSopa</code>, <code>LeãoDaMontanha</code>
 
** Exemplos: <code>RefeiçãoComSopa</code>, <code>LeãoDaMontanha</code>
  
== Identação ==
+
No caso dos nomes dos atributos dos objectos, podem encontrar-se duas formas de escrita. A primeira abordagem, herdada do C++ (mais antiga), nomeia os atributos precedidos por um sinal de sublinhado ("_"). Numa versão mais moderna, a nomenclatura é uniforme para todas as variáveis e os atributos são precedidos por "this" (e.g. '''this.a''' permite refere-se ao atributo '''a''').
 +
 
 +
=== Más escolhas de nomenclatura ===
 +
 
 +
A boa representação gráfica não desculpa más escolhas de nomenclatura.
 +
 
 +
* <code>MASSA_DO_ELECTRÃO</code> é um '''bom nome''' para uma constante que represente a massa do [[wikipedia:Electron|electrão]], mas é um '''mau nome''' para uma constante que represente a [[wikipedia:Planck's constant|Constante de Planck]].
 +
 
 +
== "Indentação" ==
 +
 
 +
De um modo geral, as regras de indentação utilizadas para linguagens com sintaxe semelhante (C/C++, etc.) são aceitáveis. Ver documentação abaixo.
  
 
== Ver Também ==
 
== Ver Também ==
  
* [http://mega.ist.utl.pt/~ic-po/2005/RegrasCodificacao.html Regras de codificação em Java]
+
* [http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html Code Conventions for the Java<sup>TM</sup> Programming Language] (note-se que este documento pode referir convenções ligeiramente diferentes: se esta situação se verificar, a programação deve ser coerente e não fazer misturas)
 +
 
 +
[[category:Ensino]]
 +
[[category:PO]]
 +
[[category:Java]]

Latest revision as of 18:13, 23 October 2013

Embora a linguagem Java tenha uma sintaxe e semântica bem definidas, decisões há que restrigem aqueles aspectos com o fim de melhorar a escrita de programas e, assim, a sua compreensão por um eventual leitor humano. Estas decisões são relativas a convenções de escrita, especialmente no que respeita a nomes de entidades que figuram num programa. São as denominadas convenções de codificação e são inteiramente para consumo humano, já que para a máquina (i.e., para o compilador) são meros adornos, completamente irrelevantes do ponto de vista funcional.

Nomes

Cuidados na representação gráfica

Além da boa escolha de um nome, é necessário algum cuidado na sua representação gráfica.

  • Constantes: todas as letras em maiúsculas; palavras separadas por "sublinhados" (underscores);
    • Exemplos bons: MASSA_DO_ELECTRÃO, CONSTANTE_DE_PLANCK
    • Exemplos maus: i, MinhaConstante, _outra_constante
  • Variáveis: a convenção é que os nomes sejam iniciados por uma letra minúscula, sendo cada nova palavra do identificador marcada pelo uso de uma maiúscula:
    • Exemplos de atributos de um objectos:
      • bons: numeroDeDentes, ratómetro
      • maus: MARIA, CoisaEstranha
    • Exemplos de variáveis locais e argumentos de métodos:
      • bons: numeroDeSérie, i (o uso de variáveis com nomes curtos deve ser limitado, tendo-se como boa a utilização como contadores de iteração)
      • maus: VARIÁVEL_LOCAL, número_de_série, número_De_Série
  • Classes: os nomes diferem dos das variáveis apenas por começarem por letra maiúscula.
    • Exemplos: RefeiçãoComSopa, LeãoDaMontanha

No caso dos nomes dos atributos dos objectos, podem encontrar-se duas formas de escrita. A primeira abordagem, herdada do C++ (mais antiga), nomeia os atributos precedidos por um sinal de sublinhado ("_"). Numa versão mais moderna, a nomenclatura é uniforme para todas as variáveis e os atributos são precedidos por "this" (e.g. this.a permite refere-se ao atributo a).

Más escolhas de nomenclatura

A boa representação gráfica não desculpa más escolhas de nomenclatura.

  • MASSA_DO_ELECTRÃO é um bom nome para uma constante que represente a massa do electrão, mas é um mau nome para uma constante que represente a Constante de Planck.

"Indentação"

De um modo geral, as regras de indentação utilizadas para linguagens com sintaxe semelhante (C/C++, etc.) são aceitáveis. Ver documentação abaixo.

Ver Também