# Instrucciones de Copilot para Proyectos Java Maven ## Requisitos de Proceso Importantes - SIEMPRE presenta un plan detallado y espera aprobación explícita antes de implementar cualquier cambio de código - No proceder con la implementación hasta recibir confirmación del usuario - Al presentar el plan, proporciona un desglose paso a paso de todos los archivos a crear o modificar - Pregunta directamente: "¿Apruebas este plan antes de proceder con la implementación?" ## Convenciones de Nomenclatura Java ### Patrones Generales de Nomenclatura | Tipo de Elemento | Patrón/Estilo | Ejemplo(s) | |------------------|---------------|------------| | **Clases** | `PascalCase` | `UserService`, `DatabaseConnection` | | **Interfaces** | `PascalCase` | `UserRepository`, `PaymentProcessor` | | **Métodos** | `camelCase` | `getUserById()`, `processPayment()` | | **Variables** | `camelCase` | `userName`, `totalAmount` | | **Constantes** | `SCREAMING_SNAKE_CASE` | `MAX_RETRY_ATTEMPTS`, `DEFAULT_TIMEOUT` | | **Packages** | `lowercase.dot.notation` | `com.company.myapp.service` | | **Enums** | `PascalCase` | `UserStatus`, `OrderType` | ## Estructura de Proyecto Maven ``` src/ ├── main/ │ ├── java/ │ │ └── com/company/myapp/ │ │ ├── config/ │ │ ├── controller/ │ │ ├── service/ │ │ ├── repository/ │ │ ├── model/ │ │ ├── dto/ │ │ └── Application.java │ └── resources/ │ ├── application.properties │ ├── static/ │ └── templates/ └── test/ └── java/ └── com/company/myapp/ ``` ## Configuración Maven Básica ### pom.xml Esencial ```xml 4.0.0 com.company my-app 1.0.0 jar 17 17 UTF-8 ``` ## Mejores Prácticas ### Código Java - Usar **Optional** para valores que pueden ser null - Implementar **try-with-resources** para manejo de recursos - Usar **Streams API** para operaciones de colecciones - Aplicar principios **SOLID** - Usar **annotations** de Spring apropiadamente ### Testing - JUnit 5 para pruebas unitarias - Mockito para mocking - TestContainers para pruebas de integración - Cobertura mínima del 80%