You are on page 1of 22

Convenciones de cdigo

para el lenguaje de programacin


JAVA
Revisado 20 Abril de 1999
por Scott Hommel
Sun Microsystems Inc.
Traducido al castellano 10 Mayo del 2001
por Alberto Molpeceres
http!!""".#avahispano.com
Revisi$n y correcci$n% mar&o de 200'
por (ucas )ieites
http!!""".code*ion.com
Convenciones de escritura de cdigo del lenguaje de programacin Java
+,-. 2!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
Convenciones de cdigo para el lenguaje de programacin
Java
TM
Revisado% 20 de Abril de 1999
Traducido al castellano% 10 de Mayo del 2001
Revisi$n y correcci$n% mar&o de 200'
ndice de contenido
1 Introduccin.....................................................................................................................5
1.1 +or .u/ convenciones de c$di-o................................................................................................... ...0
1.2 A-radecimientos......................................................................................................................... .....0
1.1 Sobre la traducci$n...................................................................................................................... ....0
!om"res de arc#ivo..........................................................................................................5
2.1 2*tensiones de los archivos................................................................................................... ..........0
2.2 3ombres de archivo com4nes............................................................................ .............................5
$ %rgani&acin de los arc#ivos.............................................................................................'
1.1 Archivos de c$di-o 6uente 7ava.............................................................................................. ..........5
3.1.1 Comentarios de inicio............................................................................................... ...............6
3.1.2 Sentencias package e import...................................................................... ............................7
3.1.3 Declaraciones de clases e interfaces....................................................................... ................7
( Indentacin......................................................................................................................)
8.1 (on-itud de la l9nea..................................................................................................... ....................:
8.2 Rotura de l9neas................................................................................................. .............................:
5 Comentarios.....................................................................................................................*
0.1 ;ormatos de los comentarios de implementaci$n............................................................... ...........10
.1.1 Comentarios de !lo"ue...................................................................................................... ....1#
.1.2 Comentarios de una l$nea........................................................................................... ...........11
.1.3 Comentarios finales.................................................................................................... ...........11
.1.% Comentarios de fin de l$nea...................................................................................... .............11
0.2 <omentarios de documentaci$n............................................................................ ........................11
' +eclaraciones.................................................................................................................1
5.1 <antidad por l9nea................................................................................................. ........................12
5.2 Iniciali&aci$n................................................................................................................... ...............11
5.1 <olocaci$n..................................................................................................................... ................11
5.8 =eclaraciones de clases e inter6aces........................................................................ .....................11
) ,entencias.....................................................................................................................1(
'.1 Sentencias simples........................................................................................................ ................18
'.2 Sentencias compuestas................................................................................................ .................18
'.1 Sentencias de retorno................................................................................................................. ...18
'.8 Sentencias i6% i6>else% i6 else>i6 else................................................................................. ................18
+,-. 1!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
'.0 Sentencias 6or............................................................................................................................ ....10
'.5 Sentencias "hile.................................................................................................................... ........10
'.' Sentencias do>"hile............................................................................................................... ........15
'.: Sentencias s"itch............................................................................................................ ..............15
'.9 Sentencias try>catch......................................................................................................... .............15
- .spacio en "lanco...........................................................................................................1)
:.1 (9neas en blanco.................................................................................................................... ........1'
:.2 2spacios en blanco................................................................................................... .....................1'
* Convenciones de nomenclatura.......................................................................................1-
1/ 01"itos de programacin..............................................................................................1-
10.1 +roporcionar acceso a variables de instancia y de clase................................................... ...........1:
10.2 Re6erencias a variables y m/todos de clase.................................................... ............................19
10.1 <onstantes...................................................................................................... ............................19
10.8 Asi-naciones de variables.......................................................................................................... ..19
10.0 H,bitos varios...................................................................................................................... ........19
1#..1 &ar'ntesis....................................................................................................................... .....1(
1#..2 )alores de retorno.................................................................................................. .............2#
1#..3 *+presiones antes de ,-. en el operador condicional.................................................. ........2#
1#..% Comentarios especiales............................................................................................. ..........2#
11 .jemplo de cdigo........................................................................................................./
11.1 2#emplo de archivo 6uente 7ava.................................................................................................. ..20
+,-. 8!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
1 Introduccin
1.1 2or 3u4 convenciones de cdigo
(as convenciones de c$di-o son importantes para los pro-ramadores por muchas ra&ones
2l :0? del coste del c$di-o de un pro-rama va a su mantenimiento.
<asi nin-4n so6t"are lo mantiene toda su vida el auto ori-inal.
(as convenciones de c$di-o me#oran la lectura del so6t"are% permitiendo entender
c$di-o nuevo mucho m,s r,pidamente y m,s a 6ondo.
Si distribuye su c$di-o 6uente como un producto% necesita ase-urarse de .ue est, bien
hecho y presentado como cual.uier otro producto.
+ara .ue 6uncionen las convenciones% cada persona .ue escribe so6t"are debe se-uir la
convenci$n. /odos.
1. Agradecimientos
2ste documento re6le#a los est,ndares de codi6icaci$n del len-ua#e 7ava presentados en @Java
0anguage SpecificationA% de Sun Microsystems% Inc. (os mayores contribuidores son +eter Bin-% +atricC
3au-hton% MiCe =eMoney% 7onni Banerva% Bathy Dalrath% y Scott Hommel. 2ste documento es mantenido
por Scott Hommel. 2nv9e sus comentarios a shommelEen-.sun.com
1.$ ,o"re la traduccin
2ste documento ha sido traducido al espaFol por Alberto Molpeceres% para el sitio "eb #avaHispano
G""".#avaHispano.comH% y se encuentra li-ado al ob#etivo de dicha "eb de 6omentar el uso y
conocimiento del len-ua#e 7ava dentro del mundo hispanoparlante. Se ha intentado hacer una traducci$n
lo m,s literal posible% y esta es la 4nica parte del documento .ue no pertenece a la versi$n ori-inal. Se
pueden enviar los comentarios sobre la traducci$n a la direcci$n alE#avahispano.com.
2ste documento ha sido revisado y corre-ido en mar&o de 200' por (ucas )ieites
G""".code*ion.comH .
!om"res de arc#ivo
2sta secci$n enumera las e*tensiones y los nombres de archivo m,s usados .
.1 .5tensiones de los arc#ivos
2l so6t"are 7ava usa las si-uientes e*tensiones para sus archivos
Tipo de arc#ivo .5tensin
+,-. 0!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
<$di-o #ava .#ava
Iytecode de #ava .class
. !om"res de arc#ivo com6nes
2ntre los nombres de archivo m,s utili&ados se encuentran
!om"re de arc#ivo 7so
J3KmaCe6ile 2l nombre pre6erido para un archivo @makeA. Ksamos gnumake para construir
nuestro so6t"are.
R2A=M2 2l nombre pre6erido para el archivo .ue resume los contenidos de un
directorio en concreto.
$ %rgani&acin de los arc#ivos
Kn archivo est, 6ormado por secciones .ue deben estar separadas por l9neas en blanco y
comentarios opcionales .ue identi6ican cada secci$n. Se deber, evitar la creaci$n de archivos de m,s de
2000 l9neas puesto .ue son inc$modos de mane#ar. +ara ver un e#emplo de un pro-rama de 7ava
debidamente 6ormateado% vea @ 11.1 2#emplo de archivo 6uente 7avaA.
$.1 Arc#ivos de cdigo 8uente Java
<ada archivo 6uente 7ava contiene una 4nica clase o inter6a& p4blica. <uando al-unas clases o
inter6aces privadas est,n asociadas a una clase p4blica% pueden ponerse en el mismo archivo .ue la clase
p4blica. (a clase o inter6a& p4blica debe ser la primera clase o inter6a& del archivo.
(os archivos 6uente 7ava tienen la si-uiente ordenaci$n
<omentarios de inicio
Sentencias @packageA e @importA
=eclaraciones de clases e inter6aces
$.1.1 Comentarios de inicio
Todos los archivos 6uente deben comen&ar con un comentario en el .ue se indican el nombre de la
clase% in6ormaci$n de la versi$n% 6echa% y copyri-ht
/* Nombre de la clase
*
* Informacin de la versin
*
* Fecha
*
* Copyright
*/
+,-. 5!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
$.1. ,entencias pac9age e import
(a primera l9nea .ue no es un comentario de los archivos 6uente 7ava es la sentencia package.
=espu/s de esta% pueden se-uir varias sentencias import. +or e#emplo
package java.at!
import java.at.peer.Canvas"eer!
!ota 2l primer componente del nombre de un pa.uete 4nico se escribe siempre en min4sculas
con caracteres AS<II y debe ser uno de los nombres de dominio de 4ltimo nivel% actualmente com% edu%
-ov% mil% net% or-% o uno de los c$di-os de dos letras .ue especi6ican el pa9s como se de6ine en el est,ndar
ISL 1155% 19:1.
$.1.$ +eclaraciones de clases e inter8aces
(a si-uiente tabla describe las partes de la declaraci$n de una clase o inter6a&% en el orden en el
.ue deber9an aparecer. )ea @ 11.1 2#emplo de archivo 6uente 7avaA.
2artes de la declaracin de una clase o
inter8a&
!otas
1 <omentario de documentaci$n de la clase o
inter6a& G/**...*/H
)ea @ 0.2 <omentarios de documentaci$nA para
m,s in6ormaci$n sobre lo .ue debe aparecer en
este comentario.

Sentencia class o interface


$ <omentario de implementaci$n de la clase o
inter6a& si 6uera necesario G/*...*/H
2ste comentario debe contener cual.uier
in6ormaci$n aplicable a toda la clase o inter6a& .ue
no sea apropiada para estar en los comentarios de
documentaci$n de la clase o inter6a&.
(
)ariables de clase GstaticH +rimero las variables de clase public% despu/s las
protected% despu/s las de nivel de pa.uete Gsin
modi6icador de accesoH % y despu/s las private.
5 )ariables de instancia
+rimero las public% despu/s las protected%
despu/s las de nivel de pa.uete Gsin modi6icador
de accesoH% y despu/s las private.
' <onstructores
) M/todos 2stos m/todos se deben a-rupar por 6uncionalidad
m,s .ue por ,mbito o accesibilidad. +or e#emplo%
un m/todo de clase privado puede estar entre dos
m/todos p4blicos de instancia. 2l ob#etivo es hacer
el c$di-o mas le-ible y comprensible.
( Indentacin
Se deben emplear cuatro espacios como unidad de indentaci$n. (a construcci$n e*acta de la
indentaci$n Gespacios en blanco o tabuladoresH no se especi6ica. (os tabuladores deben ser e*actamente
cada : espacios Gno 8H.
+,-. '!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
(.1 :ongitud de la l;nea
2vite las l9neas de m,s de :0 caracteres ya .ue no son interpretadas correctamente por muchas
terminales y herramientas.
!ota (os e#emplos destinados a uso en la documentaci$n deben tener una lon-itud in6erior%
-eneralmente no m,s de '0 caracteres.
(. <otura de l;neas
<uando una e*presi$n no entre en una l9nea debe separarla de acuerdo con los si-uientes
principios
Romper despu/s de una coma.
Romper antes de un operador.
+re6erir roturas de alto nivel Gm,s a la derecha .ue el @padreAH .ue de ba#o nivel
Gm,s a la i&.uierda .ue el @padreAH.
Alinear la nueva l9nea con el comien&o de la e*presi$n al mismo nivel de la l9nea
anterior.
Si las re-las anteriores provocan .ue su c$di-o pare&ca con6uso o .ue /ste se
acumule en el mar-en derecho% indente con : espacios.
2#emplos de como romper la llamada a un m/todo
un#etodo$e%presion&arga'( e%presion&arga)( e%presion&arga*(
e%presion&arga+( e%presion&arga,-!
var . un#etodo'$e%presion&arga'(
un#etodo)$e%presion&arga)(
e%presion&arga*--!
)eamos dos e#emplos de rotura de l9neas en e*presiones aritm/ticas. Se pre6iere el primero ya .ue
el salto de l9nea ocurre 6uera de la e*presi$n .ue encierra los par/ntesis.
nombre&argo' . nombre&argo) * $nombre&argo* / nombre&argo+ 0 nombre&argo,-
/ + * nombre&argo1! // "23F32I45
nombre&argo' . nombre&argo) * $nombre&argo* / nombre&argo+
6 nombre&argo- / + * nombre&argo1! // 37I852
A continuaci$n dos e#emplos de indentaci$n de declaraciones de m/todos. 2l primero es el caso
convencional. 2l se-undo conducir9a la se-unda y la tercera l9nea demasiado hacia la i&.uierda con la
indentaci$n convencional% as9 .ue en su lu-ar se usan : espacios de indentaci$n.
//IN43N85CI9N C9N73NCI9N5&
un#etodo$int an5rg( 9bject another5rg( :tring yet5nother5rg(
9bject and:till5nother- ;
...
<
+,-. :!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
//IN43N85CI9N 43 = 3:"5CI9: "525 37I852 >25N43: IN43N85CI9N3:
private static synchroni?ed metodo4eNombre#uy&argo$int un5rg(
9bject otro5rg( :tring todavia9tro5rg(
9bject un9tro#as- ;
...
<
(a rotura de l9neas para sentencias if deber, se-uir -eneralmente la re-la de los : espacios% ya
.ue la indentaci$n convencional G8 espaciosH hace di69cil ver el cuerpo. +or e#emplo
//N9 @:52 3:85 IN43N85CI9N
if $$condicion' AA condicion)-
BB $condicion* AA condicion+-
BBC$condicion, AA condicion1-- ; //#5&9: :5&89:
hacer5lgo$-! //D5C3N 3:85 &IN35 F5CI& 43 9&7I452
<
//@:3 8DI: IN43N858I9N IN:8354
if $$condicion' AA condicion)-
BB $condicion* AA condicion+-
BBC$condicion, AA condicion1-- ;
hacer5lgo$-!
<
//9 @:52 3:85
if $$condicion' AA condicion)- BB $condicion* AA condicion+-
BBC$condicion, AA condicion1-- ;
hacer5lgo$-!
M
Hay tres 6ormas aceptables de 6ormatear e*presiones ternarias
alpha . $una&arga3%presionEooleana- F beta G gamma!
alpha . $una&arga3%presionEooleana- F beta
G gamma!
alpha . $una&arga3%presionEooleana-
F beta
G gamma!
5 Comentarios
(os pro-ramas 7ava pueden tener dos tipos de comentarios comentarios de implementaci$n y
comentarios de documentaci$n. (os comentarios de implementaci$n son a.uellos .ue tambi/n se
encuentran en <NN% delimitados por /*...*/% y //. (os comentarios de documentaci$n Gconocidos
como @doc commentsAH e*isten s$lo en 7ava% y se limitan por /**...*/. (os comentarios de
documentaci$n se pueden e*portar a archivos HTM( con la herramienta javadoc.
(os comentarios de implementaci$n son para comentar nuestro c$di-o o para comentarios acerca
de una implementaci$n en concreto. (os comentarios de documentaci$n son para describir la
especi6icaci$n del c$di-o% libre de una perspectiva de implementaci$n% y para ser le9dos por
desarrolladores .ue pueden no tener el c$di-o 6uente a mano.
Se deben usar los comentarios para dar descripciones de c$di-o y 6acilitar in6ormaci$n adicional
.ue no es le-ible en el c$di-o mismo. (os comentarios deben contener s$lo in6ormaci$n .ue es relevante
+,-. 9!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
para la lectura y entendimiento del pro-rama. +or e#emplo% no se debe incluir como comentario
in6ormaci$n sobre c$mo se construye el pa.uete correspondiente o en .u/ directorio reside.
Se podr,n tratar discusiones sobre decisiones de diseFo .ue no sean triviales u obvias% pero se
debe evitar duplicar in6ormaci$n .ue est, presente Gde 6orma claraH en el c$di-o ya .ue es 6,cil .ue los
comentarios redundantes se .ueden obsoletos. 2n -eneral% evite cual.uier comentario .ue pueda .uedar
obsoleto a medida .ue el c$di-o evoluciona.
!ota (a 6recuencia de comentarios a veces re6le#a la escase& de calidad del c$di-o. <uando se
sienta obli-ado a escribir un comentario considere reescribir el c$di-o para hacerlo m,s claro.
(os comentarios no deben encerrarse en -randes cuadrados dibu#ados con asteriscos u otros
caracteres. (os comentarios nunca deben incluir caracteres especiales como @!ackspaceA.
5.1 =ormatos de los comentarios de implementacin
(os pro-ramas pueden tener cuatro estilos de comentarios de implementaci$n de blo.ue% de una
l9nea% 6inales% y de 6in de l9nea
5.1.1 Comentarios de "lo3ue
(os comentarios de blo.ue se usan para dar descripciones de archivos% m/todos% estructuras de
datos y al-oritmos. (os comentarios de blo.ue se podr,n usar al comien&o de cada archivo o antes de
cada m/todo. Tambi/n se pueden usar en otro lu-ares% tales como el interior de los m/todos. (os
comentarios de blo.ue en el interior de una 6unci$n o m/todo deben ser indentados al mismo nivel .ue el
c$di-o .ue describen.
Kn comentario de blo.ue debe ir precedido por una l9nea en blanco .ue lo separe del resto del
c$di-o.
/*
* 5HuI hay un comentario de bloHue.
*/
(os comentarios de blo.ue pueden comen&ar con /*6% .ue es reconocido por indent$'- como el
comien&o de un comentario de blo.ue .ue no debe ser re6ormateado. 2#emplo
/*6
* 5HuI tenemos un comentario de bloHue con cierto
* formato especial Hue Huiero Hue ignore indent$'-.
*
* uno
* dos
* tres
*/
!ota> Si no se va a utili&ar indent$'-% no se deber, usar /*6 en el c$di-o o hacer nin-una otra
concesi$n a la posibilidad de .ue al-uien e#ecute indent$'- sobre /l. )/ase tambi/n @<omentarios de
documentaci$nA.
+,-. 10!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
5.1. Comentarios de una l;nea
+ueden aparecer comentarios cortos de una 4nica l9nea al nivel del c$di-o .ue si-ue. Si un
comentario no se puede escribir en una l9nea% debe se-uir el 6ormato de los comentarios de blo.ue
Gsecci$n 0.1.1H. Kn comentario de una sola l9nea debe ir precedido de una l9nea en blanco. )eamos un
e#emplo de comentario de una sola l9nea en c$di-o 7ava
if $condicion- ;
/* Cdigo de la condicin. */
...
<
5.1.$ Comentarios 8inales
+ueden aparecer comentarios muy pe.ueFos en la misma l9nea del c$di-o .ue comentan% pero lo
su6icientemente ale#ados de /l. Si aparece m,s de un comentario corto en el mismo tro&o de c$di-o%
deben ser indentados con la misma pro6undidad. +or e#emplo
if $a .. )- ;
return 82@3! /* caso especial */
< else ;
return is"rime$a-! /* caso general */
<
5.1.( Comentarios de 8in de l;nea
2l delimitador de comentario // puede convertir en comentario una l9nea completa o una parte de
una l9nea. 3o debe ser usado para hacer comentarios de varias l9neas consecutivasO sin embar-o% puede
usarse en l9neas consecutivas para comentar secciones de c$di-o. )eamos un e#emplo de los tres estilos
if $foo J '- ;
// Dacer algo.
...
< else ;
return false! // 3%plicar aHuI por Hue.
<
//if $bar J '- ;
//
//
// Dacer algo.
// ...
//<
//else ;
// return false!
//<
5. Comentarios de documentacin
!ota )ea @ 11.1 2#emplo de archivo 6uente 7avaA para obtener e#emplos de los 6ormatos de
comentarios descritos a.u9. +ara m,s detalles% vea @Ho" to Drite =oc <omments 6or 7avadocA .ue
incluye in6ormaci$n de las eti.uetas de los comentarios de documentaci$n GKreturn% Kparam% KseeH en
http!!#ava.sun.com!products!#dC!#avadoc!"ritin-doccomments.shtml.
visite el sitio "eb de javadoc http!!#ava.sun.com!products!#dC!#avadoc! para m,s detalles acerca
+,-. 11!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
de los comentarios de documentaci$n y javadoc.
(os comentarios de documentaci$n describen clases 7ava% inter6aces% constructores% m/todos y
atributos. <ada comentario de documentaci$n se encierra con los delimitadores de comentario
/**...*/% con un comentario por clase% inter6ace o miembro Gm/todo o atributoH. 2ste comentario debe
aparecer #usto antes de la declaraci$n
/**
* &a clase 3jemplo ofrece ...
*/
public class 3jemplo ; ...
;9#ese en .ue las clases e inter6aces de alto nivel no est,n indentadas% mientras .ue sus miembros
s9 lo est,n. (a primera l9nea de un comentario de documentaci$n G/**H para clases e inter6aces no est,
indentada% las si-uientes l9neas tienen cada una un espacio de indentaci$n Gpara alinear los asteriscos
verticalmenteH. (os miembros% incluidos los constructores% tienen cuatro espacios para la primera l9nea y
0 para las si-uientes.
Si se necesita dar in6ormaci$n sobre una clase% inter6a&% variable o m/todo .ue no es apropiada
para la documentaci$n% utilice un comentario de implementaci$n de blo.ue Gsecci$n 0.1.1H o de una l9nea
Gsecci$n 0.1.2H para comentarlo inmediatamente despu's de la declaraci$n. +or e#emplo% detalles de
implementaci$n de una clase deben ir en un comentario de implementaci$n de blo.ue si-uiendo a la
sentencia class% no en el comentario de documentaci$n de la clase.
(os comentarios de documentaci$n no deben colocarse en el interior de la de6inici$n de un m/todo
o constructor% ya .ue 7ava asocia los comentarios de documentaci$n con la primera declaraci$n despu/s
del comentario.
' +eclaraciones
'.1 Cantidad por l;nea
Se recomienda una declaraci$n por l9nea% ya .ue 6acilita los comentarios. 2n otras palabras% se
pre6iere
int nivel! // nivel de indentacin
int tam! // tamaLo de la tabla
antes .ue
int level( si?e!
3o pon-a di6erentes tipos en la misma l9nea. 2#emplo
int foo( fooarrayMN! //32292C
!ota (os e#emplos anteriores usan un espacio entre el tipo y el identi6icador. Kna alternativa
aceptable es usar tabuladores% por e#emplo
int level! // nivel de indentacin
int si?e! // tamaLo de la tabla
+,-. 12!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
9bject current3ntry! // entrada de la tabla seleccionada actualmente
'. Iniciali&acin
Intente iniciali&ar las variables locales donde se declaran. (a 4nica ra&$n para no iniciali&ar una
variable donde se declara es si el valor inicial depende de c,lculos posteriores.
'.$ Colocacin
Sit4e las declaraciones solo al principio de los blo.ues Gun blo.ue es cual.uier c$di-o encerrado
por llaves @PA y @MAH. 3o espere al primer uso para declararlasO puede con6undir al pro-ramador incauto y
limitar la portabilidad del c$di-o dentro de su ,mbito.
void my#ethod$- ;
int int' . O! // comien?o del bloHue del mPtodo
if $condition- ;
int int) . O! // comien?o del bloHue del QifQ
...
<
<
(a e*cepci$n a la re-la son los 9ndices de bucles for% .ue en 7ava se pueden declarar en la
sentencia for
for $int i . O! i R ma%imo7ueltas! i//- ;
...
<
2vite las declaraciones locales .ue oculten declaraciones de niveles superiores% por e#emplo% no
declare el mismo nombre de variable en un blo.ue interno
int cuenta!
...
mi#etodo$- ;
if $condicion- ;
int cuenta . O! // 37I852C
...
<
...
<
'.( +eclaraciones de clases e inter8aces
Al pro-ramar clases e inter6aces de 7ava% se si-uen las si-uientes re-las de 6ormato
3in-4n espacio en blanco entre el nombre de un m/todo y el par/ntesis @GA .ue abre su
lista de par,metros
(a llave de apertura @PA aparece al 6inal de la misma l9nea de la sentencia de
declaraci$n
(a llave de cierre @MA empie&a una nueva l9nea indentada a#ustada a su sentencia de
apertura correspondiente% e*cepto cuando no e*isten sentencias entre ambas% .ue
debe aparecer inmediatamente despu/s de la de apertura @PA
+,-. 11!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
class 3jemplo e%tends 9bject ;
int ivar'!
int ivar)!
3jemplo$int i( int j- ;
ivar' . i!
ivar) . j!
<
int metodo7acio$- ;<
...
<
(os m/todos se separan con una l9nea en blanco
) ,entencias
).1 ,entencias simples
<ada l9nea debe contener como m,*imo una sentencia. 2#emplo
argv//! // Correcto
argc66! // Correcto
argv//! argc66! // 37I852C
). ,entencias compuestas
(as sentencias compuestas son sentencias .ue contienen listas de sentencias encerradas entre
llaves @P sentencias MA. )ea los e#emplos de las si-uientes secciones.
(as sentencias encerradas deben indentarse un nivel m,s .ue la sentencia compuesta.
(a llave de apertura se debe poner al 6inal de la l9nea .ue comien&a la sentencia
compuestaO la llave de cierre debe empe&ar una nueva l9nea y ser indentada al mismo
nivel .ue el principio de la sentencia compuesta.
(as llaves se usan en todas las sentencias% incluso las simples% cuando 6orman parte de
una estructura de control% como en las sentencias if6else o for. 2sto hace m,s
sencillo aFadir sentencias sin incluir accidentalmente !ugs por olvidar las llaves.
).$ ,entencias de retorno
Kna sentencia return con un valor no debe usar par/ntesis a no ser .ue .ue ha-an el valor de
retorno m,s obvio de al-una manera. 2#emplo
return!
return mi4isco4uro.si?e$-!
return $tamanyo F tamanyo G tamanyo"or4efecto-!
).( ,entencias i8? i8@else? i8 else@i8 else
(a clase de sentencias if6else debe tener la si-uiente 6orma
if $condicion- ;
+,-. 18!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
sentencias!
<
if $condicion- ;
sentencias!
< else ;
sentencias!
<
if $condicion- ;
sentencia!
< else if $condicion- ;
sentencia!
< else ;
sentencia!
<
!ota (as sentencias if usan siempre llaves @PMA. 2vite la si-uiente 6orma% propensa a errores
if $condicion- //37I852C 3:89 9#I83 &5: &&573: ;<C
sentencia!
).5 ,entencias 8or
Kna sentencia for debe tener la si-uiente 6orma
for $iniciali?acion! condicion! actuali?acion- ;
sentencias!
<
Kna sentencia for vac9a Guna en la .ue todo el traba#o se hace en las cl,usulas de iniciali&aci$n%
condici$n% y actuali&aci$nH debe tener la si-uiente 6orma
for $iniciali?acion! condicion! actuali?acion-!
Al usar el operador @comaA en la cl,usula de iniciali&aci$n o actuali&aci$n de una sentencia for
evite la comple#idad de usar m,s de tres variables. Si es necesario utilice sentencias separadas antes de
bucle for Gpara la cl,usula de iniciali&aci$nH o al 6inal del bucle Gpara la cl,usula de actuali&aci$nH.
).' ,entencias A#ile
Kna sentencia hile debe tener la si-uiente 6orma
hile $condicion- ;
sentencias!
<
Kna sentencia "hile vac9a debe tener la si-uiente 6orma
hile $condicion-!
+,-. 10!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
).) ,entencias do@A#ile
Kna sentencia do6hile debe tener la si-uiente 6orma
do ;
sentencias!
< hile $condicion-!
).- ,entencias sAitc#
Kna sentencia sitch debe tener la si-uiente 6orma
sitch $condicion- ;
case 5ECG
sentencias!
/* este caso se propaga */
case 43FG
sentencias!
break!
case STUG
sentencias!
break!
defaultG
sentencias!
break!
<
<ada ve& .ue un caso se propa-a Gno incluye la sentencia breakH% aFada un comentario donde
normalmente se encontrar9a la sentencia break. 2sto se muestra en el e#emplo anterior con el
comentario /* este caso se propaga */.
<ada sentencia sitch debe incluir un caso @por de6ectoA GdefaultH. 2l break en el caso @por
de6ectoA es redundante% pero previene .ue se propa-ue por error si lue-o se aFade otro caso.
).* ,entencias trB@catc#
Kna sentencia try6catch debe tener la si-uiente 6orma
try ;
sentencias!
< catch $3%ceptionClass e- ;
sentencias!
<
Kna sentencia try6catch puede ir se-uida de un finally% cuya e#ecuci$n se e#ecutar,
independientemente de .ue el blo.ue try se haya completado con /*ito o no.
try ;
sentencias!
< catch $3%ceptionClass e- ;
sentencias!
< finally ;
sentencias!
<
+,-. 15!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
- .spacio en "lanco
-.1 :;neas en "lanco
(as l9neas en blanco me#oran la 6acilidad de lectura separando secciones de c$di-o .ue est,n
l$-icamente relacionadas. Se deben usar siempre dos l9neas en blanco en las si-uientes circunstancias
2ntre las secciones de un archivo 6uente
2ntre las de6iniciones de clases e inter6aces.
Se debe usar siempre una l9nea en blanco en las si-uientes circunstancias
2ntre m/todos
2ntre las variables locales de un m/todo y su primera sentencia
Antes de un comentario de blo.ue o de un comentario de una l9nea
2ntre las distintas secciones l$-icas de un m/todo para 6acilitar la lectura.
-. .spacios en "lanco
Se deben usar espacios en blanco en las si-uientes circunstancias
Kna palabra clave del len-ua#e se-uida por un par/ntesis debe separarse por un
espacio. 2#emplo
hile $true- ;
...
<
;9#ese en .ue no se debe usar un espacio en blanco entre el nombre de un m/todo y su
par/ntesis de apertura. 2sto ayuda a distin-uir palabras clave de llamadas a m/todos.
=ebe aparecer un espacio en blanco despu/s de cada coma en las listas de
ar-umentos.
Todos los operadores binarios e*cepto @.A se deben separar de sus operandos con
espacios en blanco. (os espacios en blanco no deben separar los operadores unarios%
incremento G@//AH y decremento G@66AH de sus operandos. 2#emplo
a /. c / d!
a . $a / b- / $c * d-!
hile $d// .. s//- ;
n//!
<
prints$Qel tamaLo es Q / foo / QVnQ-!
(as e*presiones en una sentencia for se deben separar con espacios en blanco.
2#emplo
for $e%pr'! e%pr)! e%pr*-
(os @CastA deben ir se-uidos de un espacio en blanco. 2#emplos
mi#etodo$$byte- unNumero( $9bject- %-!
mi#etodo$$int- $cp / ,-( $$int- $i / *-- / '-!
+,-. 1'!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
* Convenciones de nomenclatura
(as convenciones de nomenclatura hacen .ue el c$di-o sea m,s inteli-ible al hacerlo m,s 6,cil de
leer. Tambi/n pueden dar in6ormaci$n sobre la 6unci$n de un identi6icador% por e#emplo% cuando es una
constante% un pa.uete o una clase% lo cual puede ser 4til para entender el c$di-o.
Tipo de identi8icador <eglas de nomenclatura .jemplos
+a.uetes 2l pre6i#o del nombre de un pa.uete se escribe siempre con
letras AS<II en min4sculas% y debe ser uno de los nombres de
dominio de alto nivel Gactualmente com% edu% -ov% mil% net%
or-H o uno de los c$di-os in-leses de dos letras .ue identi6ican
cada pa9s como se especi6ica en el est,ndar ISL 1155% 19:1.
(os si-uientes componentes del nombre del pa.uete variar,n
de acuerdo a las convenciones de nomenclatura internas de
cada or-ani&aci$n. =ichas convenciones pueden especi6icar
.ue al-unos nombres de los directorios correspondan a
divisiones% departamentos% proyectos o m,.uinas.
com.sun.eng
com.apple.Huicktime.v)
edu.cmu.cs.bovik.cheese
<lases
(os nombres de las clases deben ser sustantivos. <uando son
compuestos tendr,n la primera letra de cada palabra .ue lo
6orma en may4sculas. Intente mantener los nombres de las
clases simples y descriptivos. Kse palabras completas% evite
acr$nimos y abreviaturas Ga no ser .ue la abreviatura sea
mucho m,s conocida .ue el nombre completo% como @2& o
D8#&H.
class Cliente!
class Imagen5nimada!
Inter6aces (os nombres de las inter6aces si-uen la misma re-la .ue las
clases.
interface
9bjeto"ersistente!
interface 5lmacen!
M/todos (os m/todos deben ser verbos. <uando son compuestos
tendr,n la primera letra en min4scula y la primera letra de las
si-uientes palabras .ue lo 6orma en may4scula.
ejecutar$-!
ejecutar2apido$-!
co-er;ondoGHO
)ariables 2*cepto las constantes% todas las instancias y variables de
clase o m/todo empe&ar,n con min4scula. (as palabras
internas .ue lo 6orman Gsi son compuestasH empie&an con su
primera letra en may4sculas. (os nombres de variables no
deben empe&ar con los caracteres guin !ajo @QA o si-no de
d$lar @RA% aun.ue ambos est,n permitidos por el len-ua#e.
(os nombres de las variables deben ser cortos pero
si-ni6icativos. (a elecci$n del nombre de una variable debe ser
un mnem$nico% desi-nado para indicar a un observador
ocasional su 6unci$n. (os nombres de variables de un solo
car,cter se deben evitar% e*cepto para variables 9ndices
temporales. 3ombres comunes para variables temporales son
i( j( k( m( y n para enterosO c( d( y e para caracteres.
int i!
char cO
float mi5nchura!
<onstantes (os nombres de las variables declaradas como constantes
deben ir totalmente en may4sculas separando las palabras con
un -ui$n ba#o G@QAH. G(as constantes A3SI se deben evitar% para
6acilitar la depuraci$n.H
static final int
5NCD@25W#INI#5 . +!
static final int
5NCD@25W#5SI#5 . XXX!
static final int
C9>32W&5WC"@ . '!
1/ 01"itos de programacin
1/.1 2roporcionar acceso a varia"les de instancia B de clase
3o ha-a p4blica nin-una variable de instancia o clase sin una buena ra&$n. A menudo las variables
de instancia no necesitan ser asi-nadas GsetH o consultadas 1get2 e*pl9citamente% esto suele suceder
como e6ecto de una llamada a m/todo.
Kn e#emplo de una variable de instancia p4blica apropiada es el caso en .ue la clase es
+,-. 1:!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
esencialmente una estructura de datos% sin comportamiento. 2n otras palabras% si usara la palabra
struct en lu-ar de una clase Gsi 7ava soportara structH% entonces ser9a adecuado hacer las variables de
instancia p4blicas.
1/. <e8erencias a varia"les B m4todos de clase
2vite usar un ob#eto para acceder a una variable o m/todo de clase GstaticH. Kse el nombre de la
clase en su lu-ar. +or e#emplo
metodo4eClase$-! //9Y
@naClase.metodo4eClase$-! //9Y
un9bjeto.metodo4eClase$-! //37I852C
1/.$ Constantes
(as constantes num/ricas GliteralesH no se deben codi6icar directamente% e*cepto >1% 0% y 1% .ue
pueden aparecer en un bucle for como contadores.
1/.( Asignaciones de varia"les
2vite asi-nar el mismo valor a varias variables en la misma sentencia. 2s di69cil de leer. 2#emplo
fooEar.fChar . barFoo.lchar . ZcZ! // 37I852C
3o use el operador de asi-naci$n en un lu-ar donde se pueda con6undir con el de i-ualdad.
2#emplo
if $c// . d//- ; // 37I852C $[ava lo recha?a-
...
<
se debe escribir
if $$c// . d//- C. O- ;
...
<
3o use asi-naciones embebidas como un intento de me#orar el rendimiento en tiempo de
e#ecuci$n. 2se es el traba#o del compilador. 2#emplo
d . $a . b / c- / r! // 37I852C
se debe escribir
a . b / c!
d . a / r!
1/.5 01"itos varios
1/.5.1 2ar4ntesis
2n -eneral es una buena idea usar par/ntesis en e*presiones .ue involucran a distintos operadores
para evitar problemas con el orden de precedencia de los operadores. Incluso si parece claro el orden de
precedencia de los operadores podr9a no ser as9 para otros% no se debe asumir .ue otros pro-ramadores
cono&can el orden de precedencia.
+,-. 19!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
if $a .. b AA c .. d- // 37I852C
if $$a .. b- AA $c .. d-- // C9223C89
1/.5. Valores de retorno
Intente hacer .ue la estructura del pro-rama se a#uste a su ob#etivo. 2#emplo
if $e%presionEooleana- ;
return true!
< else ;
return false!
<
en su lu-ar se debe escribir
return e%pressionEooleana!
=el mismo modo%
if $condicion- ;
return %!
<
return y!
se debe escribir
return $condicion F % G y-!
1/.5.$ .5presiones antes de CDE en el operador condicional
Si una e*presi$n contiene un operador binario antes de @FA en el operador ternario @FGA se debe
colocar entre par/ntesis. 2#emplo
$% J. O- F % G 6%!
1/.5.( Comentarios especiales
Kse @SSSA en un comentario para indicar .ue al-o tiene al-4n error pero 6unciona. Kse @FIS#3A
para indicar .ue al-o tiene al-4n error y no 6unciona.
11 .jemplo de cdigo
11.1 .jemplo de arc#ivo 8uente Java
2l si-uiente e#emplo muestra el 6ormato de archivo 7ava con una sola clase p4blica. (as inter6aces
se 6ormatean de modo similar. )ea @ 5.8 =eclaraciones de clases e inter6acesA y @ 0.2 <omentarios de
documentaci$nA.
/*
* K$\-Elah.java '.=) XX/O*/'=
*
* Copyright $c- 'XX+6'XXX :un #icrosystems( Inc.
* XO' :an 5ntonio 2oad( "alo 5lto( California( X+*O*( @.:.5.
* 5ll rights reserved.
*
* 8his softare is the confidential and proprietary information of :un
* #icrosystems( Inc. $QConfidential InformationQ-. Tou shall not
* disclose such Confidential Information and shall use it only in
* accordance ith the terms of the license agreement you entered into
+,-. 20!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
* ith :un.
*/
package java.blah!
import java.blah.blahdy.ElahElah!
/**
* 5HuI va la descripcin de la clase.
*
* Kversion '.=) '= #ar 'XXX
* Kauthor Firstname &astname
*/
public class Elah e%tends :omeClass ;
/* 5HuI puede ir un comentario acerca de la implementacin de la clase. */
/** Comentario para la documentacin de class7ar' */
public static int class7ar'!
/**
* Comentario de la documentacin de class7ar) Hue resulta tener m]s de
* una lInea de longitud.
*/
private static 9bject class7ar)!
/** Comentario de documentacin de instance7ar' */
public 9bject instance7ar'!
/** Comentario de documentacin de instance7ar) */
protected int instance7ar)!
/** Comentario de documentacin de instance7ar* */
private 9bjectMN instance7ar*!
/**
* ... comentario de documentacin del constructor de Elah ...
*/
public Elah$- ;
// ...aHuI va la implementacin...
<
/**
* ...comentario de documentacin del mPtodo do:omething...
*/
public void do:omething$- ;
// ...aHuI va la implementacin...
<
/**
* ... comentario de documentacin del mPtodo do:omething3lse ...
* Kparam some"aram descripcin
*/
public void do:omething3lse$9bject some"aram- ;
// ...aHuI va la implementacin...
<
<
+,-. 21!22
Convenciones de escritura de cdigo del lenguaje de programacin Java
Convenciones del cdigo Java> CopBrig#t de ,un.
+uede copiar% adaptar y redistribuir este documento para uso no comercial o para uso interno de un
6in comercial. Sin embar-o% no debe volver a publicar este documento% ni publicar o distribuir una copia
de este documento en otro caso de uso .ue el no comercial o el interno sin obtener anteriormente la
aprobaci$n e*presa y por escrito de Sun. Al copiar% adaptar o redistribuir este documento si-uiendo las
indicaciones anteriores% est, obli-ado a conceder el cr/dito a Sun. Si reproduce o distribuye el documento
sin nin-una modi6icaci$n sustancial en su contenido% use la si-uiente l9nea de cr/dito
Copyright 'XX,6'XXX :un #icrosystems( Inc. 5ll rights reserved. @sed by permission.
Si modi6ica este documento de 6orma .ue altera su si-ni6icado% por e#emplo% para se-uir las
convenciones propias de su empresa% usa la si-uiente l9nea de cr/ditos
5dapted ith permission from [575 C943 C9N73N8I9N:. Copyright 'XX,6'XXX :un #icrosystems( Inc.
5ll rights reserved.
2n ambos casos aFada un enlace de hiperte*to u otra re6erencia al sitio "eb de las convenciones
de c$di-o de 7ava http!!#ava.sun.com!docs!codeconv!
Convenciones del cdigo Java> CopBrig#t de la traduccin de
java0ispano.
Se puede y se debe aplicar a esta traducci$n las mismas condiciones de licencia .ue al ori-inal de
Sun en lo re6erente a uso% modi6icaci$n y redistribuci$n. Si distribuyes esta traducci$n Gaun.ue sea con
otro 6ormato de estiloH estas obli-ado a dar cr/ditos a #avaHispano por la traducci$n indic,ndolo con la
si-uientes l9neas
5dapted ith permission from [575 C943 C9N73N8I9N:. Copyright 'XX,6'XXX :un #icrosytems( Inc.
5ll rights reserved. Copyright )OO' .javaDispano.com. 8odos los derechos reservados.
9torgados derechos de copia y redistribucin para uso interno y no comercial.
Asimismo% aun.ue no se re.uiere% se a-radecer, .ue incluya un enlace al sitio "eb de #avaHispano
http!!""".#avaHispano.com
+,-. 22!22

You might also like