Reglas de Programacion (Sprint 0) - Polnareff69/P2P-Front GitHub Wiki
Este documento establece las reglas esenciales de programación en U-Market, organizadas por categorías. Todo el equipo debe seguir estas reglas para mantener un código estructurado, mantenible y seguro.
- Todo código debe seguir la Guía de Estilo de Programación definida.
- Se deben escribir comentarios claros en inglés cuando sea necesario.
- Nunca dejar código sin utilizar o comentarios de pruebas dentro del repositorio.
- Todo código debe pasar las revisiones de PR antes de ser integrado en
main.
- Nunca incluir lógica de negocio dentro de los controladores.
- Todos los controladores deben llamar a un servicio o modelo para manejar los datos.
- Cada acción debe estar documentada con
///en Dart. - Los controladores solo deben retornar datos en JSON o respuestas estructuradas.
Ejemplo Correcto:
class ProductController {
final ProductService _productService;
ProductController(this._productService);
Future<List<Product>> getProducts() async {
return await _productService.fetchProducts();
}
}Ejemplo Incorrecto:
class ProductController {
Future<List<Product>> getProducts() async {
return await database.query("SELECT * FROM products");
}
}- Cada modelo debe estar en su propia clase y archivo.
- No deben contener lógica de negocio, solo estructuras de datos.
- Los nombres de los modelos deben estar en PascalCase.
- Deben definir correctamente los tipos de datos de cada atributo.
Ejemplo Correcto:
class Product {
final int id;
final String name;
final double price;
Product({required this.id, required this.name, required this.price});
}- Toda vista debe seguir el diseño de UI definido en el proyecto.
- No se permite lógica dentro de las vistas; solo presentación de datos.
- Las vistas deben consumir los datos de un controlador o servicio.
- Nunca abrir y cerrar código Dart dentro de las vistas.
- Toda ruta debe estar asociada a un controlador.
- Las rutas deben seguir una estructura clara y bien organizada.
- Usar nombres descriptivos para cada ruta.
Ejemplo Correcto:
final routes = {
'/login': (context) => LoginPage(),
'/products': (context) => ProductListPage(),
};Ejemplo Incorrecto:
final routes = {
'/': (context) => HomePage(),
'/xyz': (context) => SomethingWeird(),
};- Nunca exponer claves de API o credenciales en el código fuente.
- Usar .env para almacenar configuraciones sensibles.
- Implementar validaciones en cada entrada de usuario.
- Todos los endpoints deben requerir autenticación cuando sea necesario.