Este documento organiza las reglas de estilo y diseño de la cátedra. La numeración hexadecimal (0x...) permite referenciar fácilmente las reglas durante las correcciones (ej: “Ver regla 0x2001”).
Orden sugerido de lectura¶
Si sos nuevo en Java, te recomendamos este orden:
Serie 0x0 (Nomenclatura básica)
Serie 0x5 (Estructuras de Control)
Serie 0x2 (Diseño OOP básico)
Consultar la Serie 0xE (Errores Comunes) antes de entregar los TPs.
0x0 - Nomenclatura y Formato¶
Define cómo nombrar clases, métodos, variables y constantes. Reglas fundamentales de legibilidad.
0x0001- Los nombres de las clases van enCamelloCase[Estándar Java]0x0002- Los identificadores válidos son solo con alfabéticos[a-zA-Z]0x0003- Variables, parámetros y variables locales van endromedarioCase[Convención del Curso]0x0004- Los nombres de los métodos van endromedarioCase[Estándar Java]0x0005- Las constantes van en mayúsculas conSNAKE_CASE[Convención del Curso]0x0006A- [Recomendación Avanzada] [Recomendación] Nomenclatura de interfaces según su propósito0x0007- Los identificadores booleanos deben usar prefijos interrogativos
0x1 - Documentación y Comentarios¶
Criterios para escribir Javadoc y definir contratos (PRE/POST).
0x1000- La documentación debe seguir el formato Javadoc estándar0x1001- Las clases, métodos y atributos llevan documentación Javadoc0x1002- Todas las excepciones que lancemos deben estar documentadas con@throws0x1005- Al documentar, no se indica el tipo de los parámetros o retorno0x1006- [Avanzado] Las precondiciones deben documentarse con@paramo comentarios
0x2 - Diseño de Clases y POO¶
Buenas prácticas de encapsulamiento, visibilidad y responsabilidades.
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- [Recomendación] Los métodos deben tener idealmente 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ía estándar0x2011- No exponer detalles internos mediante getters (TP9 - Agenda)0x2012- Usar Factory Methods para construcción compleja (TP - Agenda)
0x3 - Manejo de Excepciones¶
Estrategias para prevenir, atrapar y propagar errores.
0x3000- Validación previa (Look Before You Leap) antes que excepciones0x3001- Propagación natural: No atajar si no podés tomar una decisión útil0x3004- Lanzar y atajar excepciones específicas, no las clases base
0x4 - Testing¶
Reglas para estructurar tests unitarios (AAA) y validaciones.
0x4000- El test debe tener el mismo nombre que la clase conTestal final0x4001- El test debe seguir la estructura AAA (Arrange-Act-Assert)0x4002- Un único Act: Una llamada a método por cada caso de prueba
0x5 - Estructuras de Control y Flujo¶
Restricciones didácticas y convenciones sobre if, for, while y retornos.
0x5001- Sin usar la asignación compuesta (+=,-=,*=, etc) [Restricción Didáctica]0x5002- Sinbreakycontinue, en su lugar usen banderas [Restricción Didáctica]0x5003- Usar parámetros como variables solo si no cambia su significado [Criterio de Diseño]
0x6 - Restricciones sobre Programación Funcional¶
Herramientas que se postergan temporalmente por motivos pedagógicos.
0x6000- No usar expresiones lambda ni referencias a métodos0x6002- No usar métodos funcionales de colecciones ni encadenamiento
0xE - Errores Comunes¶
Repertorio de antipatrones frecuentes observados en las entregas.