Reglas de Programacion (Sprint 0) - Polnareff69/P2P-Front GitHub Wiki

Reglas de Programación - U-Market

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.

1. Reglas Generales

  • 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.

2. Reglas para Controladores

  • 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");
  }
}

3. Reglas para Modelos

  • 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});
}

4. Reglas para Vistas

  • 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.

5. Reglas para Rutas

  • 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(),
};

6. Reglas para Seguridad

  • 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.

Cumplimiento de Reglas

Si un Pull Request (PR) no sigue estas reglas, debe ser rechazado y el desarrollador debe corregirlo antes de la integración en el proyecto.

⚠️ **GitHub.com Fallback** ⚠️