Índice de Reglas de Estilo¶
0x0 - Nomenclatura y Formato¶
0x0000- Sin errores de ortografía y apliquen formato markdown donde sea posible0x0002- Los identificadores válidos son solo con alfabéticos[a-zA-Z]0x0003- Variables, parámetros y variables locales van endromedarioCase0x0007- Los identificadores booleanos deben usar prefijos interrogativos0x0008- Los identificadores no deben llevar el tipo de lo que procesan0x000B- No hacerimport paquete.*, solo traer lo que se necesita0x000C- Los números mágicos deben convertirse en constantes nombradas0x000D- Los comentarios deben explicar el “por qué”, no el “qué”
0x1 - Documentación y Comentarios¶
0x1000- La documentación debe seguir el formato Javadoc estándar0x1001- Las clases, atributos y métodos llevan documentación Javadoc0x1002- Todas las excepciones que lancemos deben estar documentadas con@throws0x1003- Las excepciones de tiempo de ejecución deben documentar cómo evitar su lanzamiento0x1004- Documenten el lanzamiento indirecto de excepciones propias0x1005- Al documentar, no se indica el tipo de los parámetros o retorno0x1006- Las precondiciones deben documentarse con@paramo comentarios
0x2 - Diseño de Clases y POO¶
0x2001- Los atributos van endromedarioCasey deben serprivate0x2002- La inicialización de los atributos va en el constructor0x2003- Los paquetes deben comenzar enar.unrne ir en minúsculas0x2005-equalsyhashCodedeben ser implementados juntos o no estar0x2006- Al extender, sobreescribir solo para llamar a super no es correcto0x2008- Los métodos get/set no pueden ser usados para la lógica del problema0x2009- La utilización de atributos estáticos debe estar justificada0x200A- Los métodos deben tener máximo 20-30 líneas de código0x200C- No usar métodos getter/setter si violan encapsulamiento0x200D- Las clases deben tener una única responsabilidad (SRP)0x200E- La implementación deequalsdebe usar Pattern Matching para el cast0x200F- La implementación deequalsdebe ser primero la deObject0x2010- La implementación dehashCodedebe emplear la librería0x2011- No exponer detalles internos mediante getters (TP9 - Agenda)0x2012- Usar Factory Methods para construcción compleja (TP9 - Agenda)
0x3 - Manejo de Excepciones¶
0x3000- No atajar la excepción si no es posible tomar una decisión0x3001- El main de un programa no debe dejar pasar excepciones checked0x3002- Qué familia de excepciones se eligió debe estar documentada0x3004- No convertir excepciones checked a unchecked sin justificación0x3005- Sean específicos con lo que atajan, no está permitido atajarExceptionoRuntimeException0x3006- Situaciones diferentes requieren excepciones diferentes0x3007- ‘Largo cero’ ynullson dos situaciones bastante diferentes0x3008- Declarar el lanzamiento de una excepción no controlada es un error0x3009- No está permitido lanzar excepciones base:ExceptionoRuntimeException0x300B- Silenciar una excepción no es la forma de gestionarla0x300C- No está permitido atajar para relanzar sin agregar información útil0x300D- Atajar para hacer algún tipo deprintno es gestionar la excepción
0x4 - Testing¶
0x4000- El test debe tener el mismo nombre que la clase conTestal final0x4001- El test debe seguir la estructura AAA (Arrange-Act-Assert)0x4005- Cada test debe ser independiente y poder ejecutarse en cualquier orden
0x5 - Estructuras de Control y Flujo¶
0x5003- Usar parámetros como variables solo si no cambia su significado0x5004- Los métodos no deben usarprintfoScannera no ser que sea explícitamente su propósito0x5005- Evitar anidamiento profundo de condicionales (máximo 3 niveles)0x5006- Los bucles deben tener condiciones de terminación claras