Documente Academic
Documente Profesional
Documente Cultură
Estndares
Normas de Codificacin
ndice
1 Introduccin______________________________________________4
2 Juego de Caracteres______________________________________4
2.1
Consideraciones generales________________________________4
2.2
2.3
Ficheros XML_______________________________________________5
2.4
Convenciones de nombrado_______________________________5
3.1.1
Paquetes_________________________________________________________5
3.1.2
Clases____________________________________________________________6
3.1.3
Interfaces________________________________________________________6
3.1.4
Constantes_______________________________________________________6
3.1.5
Variables_________________________________________________________6
3.1.6
Variables locales_________________________________________________7
3.1.7
Parmetros_______________________________________________________7
3.1.8
Mtodos__________________________________________________________7
3.1.9
3.1.10
3.2
Convenciones de documentacin_________________________8
3.2.1
Javadoc__________________________________________________________8
3.2.2
Paquetes_________________________________________________________8
3.2.3
Clases e Interfaces_______________________________________________8
3.2.4
Mtodos__________________________________________________________8
3.2.5
3.3
Normas de codificacin____________________________________9
3.3.1
3.3.2
3.3.3
3.3.4
3.3.5
Normas manuales_______________________________________________17
3.4
4.1.1
Cabeceras WSDL________________________________________________20
4.1.2
Inline WSDL_____________________________________________________21
4.1.3
Namespaces____________________________________________________21
1 Introduccin
El siguiente documento contiene las recomendaciones y la normativa de
calidad que debe cumplir el cdigo fuente de las aplicaciones.
Estas normas son de obligado cumplimiento aunque podrn considerarse
excepciones, que sern propuestas por el equipo y analizadas conjuntamente con el
Comit de Estndares.
Durante el control de calidad se realizar una comprobacin lo ms automtica
posible que permita generar un informe de cumplimiento de la normativa as como una
mtrica de calidad asociada.
Las herramientas de anlisis esttico del cdigo son gratuitas y de libre
distribucin. Esto implica que cada proveedor puede realizar tambin dicha
comprobacin antes de realizar la entrega usando el conjunto de reglas
proporcionadas por el IAM.
2 Juego de Caracteres
2.1 Consideraciones generales
Para evitar problemas por el uso de distintas configuraciones en los ficheros de
cdigo fuente java, los ficheros de configuracin, los ficheros de recursos de idiomas y
scripts de base de datos deben estar codificadas en UTF-8, tanto para ficheros Java,
pginas HTML, JSP, scripts de base de datos, etc.
- En una JSP, la directiva de pgina contentType puede ser utilizada con este
mismo fin:
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
Paquetes
Los paquetes que contienen las excepciones de una determinada capa sern
de la forma es.iam.[proyecto].[funcionalidad].[capa].*.exception
1.1.2
Clases
1.1.3
Interfaces
Los nombres de las interfaces siguen las mismas reglas que los nombres de
las clases.
Los nombres de las interfaces deben empezar por la letra I mayscula para
distinguir Clases e Interfaces.
1.1.4
Constantes
1.1.5
Variables
1.1.6
Variables locales
1.1.7
Parmetros
1.1.8
Mtodos
1.1.9
Son los mtodos que se utilizan para encapsular el acceso a una variable de la
clase que debe ser privada. Estos mtodos se denominan igual que la variable de la
clase que encapsulan, con la salvedad de que se substituye el prefijo de la variable por
los siguientes prefijos:
1.1.10
Javadoc
<code> ... </code> o <tt> ... </tt> para fragmentos pequeos de cdigo.
Se debe tener documentado todo el API que exporta tu clase, es decir, las
variables, constantes, mtodos y constructores public y protected.
1.1.12
Paquetes
Clases e Interfaces
1.1.14
Mtodos
1.1.15
variables de
Descripcin
Comprobar
Umbral
PMD
DoNotCallGarbageCollectionExplicitly
UncommentedMain
Checkstyle
Checkstyle
RegExp
R
RegExp
System.setProperties
System.exit
System.err
System.out
setMaxInactiveInterval
Checkstyle
Thread.sleep
PMD
UnnecessaryCaseChange
No usar la anotacin
@SuppressWarnings para evitar los
warnings del compilador
Checkstyle
SuppressWarnings
10
usoSingleThreadModel
G
DoNotUseThreads
M
SimpleDateFormatNeedsLocale
PMD
PMD.
PMD
1.1.17
PMD
comprobar
Descripcin
Comprobar
PMD
AvoidCatchingNPE
No capturar excepciones
NullPointerException.
PMD
AvoidPrintStackTrace
PMD
AvoidThrowingNullPointerException
No disparar excepciones
NullPointerException.
PMD
Umbral
AssignmentToNonFinalStatic
11
AvoidThrowingRawExceptionTypes
PMD
BooleanExpressionComplexity
Checkstyle
ClassNamingConventions
PMD
ConstructorCallsOverridableMethod
PMD
CyclomaticComplexity
PMD
PMD.
DoNotUseThreads
ExcessiveClassLength
PMD
2000
ExcessiveMethodLength
PMD
200
ExcessiveParameterList
PMD
14
PMD
60
ExcessivePublicCount
Checkstyle
ExplicitInitialization
Checkstyle
25
IllegalImport
sun.*
PMD
org.springframework.jdbc.support.nativej
dbc.NativeJdbcExtractor.
12
MethodNamingConventions
PMD
NoScriptlets
PMD
PackageDeclaration
Checkstyle
PackageName
Checkstyle
Checkstyle
RegExp
SignatureDeclareThrowsException
SystemPrintln
System.in
PMD
No se permite llamadas
PMD
System.out .print
System.err.print
UnusedPrivateMethod
PMD
UseArrayListInsteadOfVector
PMD
UseStringBufferForStringAppends
PMD
1.1.18
1.1.19
Descripcin
Comprobar
AbstractNaming
PMD
AvoidDuplicateLiterals
PMD
AvoidStarImpor
Checkstyle
PMD
AvoidUsingOctalValues
CompareObjectsWithEquals
PMD
ConstantName
Checkstyle
EmptyCatchBlock
PMD
EmptyFinallyBlock
PMD
EmptyIfStmt
PMD
EmptyStatementNotInLoop
PMD
EmptySwitchStatements
PMD
EmptyTryBlock
PMD
EmptyWhileStmt
PMD
Umbral
14
EqualsNull
PMD
Checkstyle
FallThrough
PMD
ForBienFormado
InstantiationToGetClass
PMD
JavadocPackage
Checkstyle
Checkstyle
JavadocStyle
JavadocVariable
Checkstyle
JavadocType
Checkstyle
JavadocMethod
Checkstyle
LongVariable
PMD
30
15
MissingBreakInSwitch
PMD
NPathComplexity
PMD
Checkstyle
OperatorWrap
PositionLiteralsFirstInComparison
s
PMD
RedundantImport
Checkstyle
ShortMethodName
PMD
PMD
200
PMD
StringBufferInstantiationWithChar
StringToString
PMD
UnconditionalIfStatement
PMD
UnusedFormalParameter
PMD
UnusedImports
Checkstyle
16
UnusedLocalVariable
PMD
UnusedPrivateField
PMD
PMD
VariableNamingConventions
VisibilityModifier
1.1.20
Checkstyle
Normas manuales
java.io.OutputStream,
java.io.Writer).
subclases
de
java.io.Reader
subclases
de
No
se
debe
usar
System.out,
System.err
o
exception.printStackTrace, pues dichas salidas se vuelcan
directamente en los ficheros de traza del servidor sin poder configurar
en caliente el nivel de raza. Esto podra degenerar en el
desbordamiento de dicho fichero o la lentitud del servicio.
Cabeceras WSDL
<wsdl:definitions name="NombreServicio"
targetNamespace=http://ws.iam.es/nombreServicio
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
xmlns:tns="http://ws.iam.es/nombreServicio"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd=http://www.w3.org/2001/XMLSchema>
1.1.22
Inline WSDL
20
Namespaces
21