Volver al blog
General Good Practices in programming

nice notes to good practices in development

metodologias

General Good Practices in programming:

Primero Transformar los datos, después organizar:

Siempre que debamos trabajar con datos y una estructura que requiera ambos pasos. es mejor primero filtrar,limpiar, sacar poner, etc… y finalmente si organizar,agrupar,ordenar,etc…

✦----------------------------------------------------------------------------------------------------------------✦

Una buena forma de buscar buenas practias de codigo es evitar estos code smells

DRY:

Don’t Repeat Yourself

La idea consiste en que no vuelvas a implementar lo que Ya implementastes antes

  • funciones
  • clases
  • constantes
  • etc…

Siempre que puedas reutiliza lo util :) ✦----------------------------------------------------------------------------------------------------------------✦

code smells:

boolean parameters:

Ocurre cuando se usan parámetros booleanos (true/false) en métodos, lo que hace que sea imposible saber qué opción se está activando sin leer la implementación interna.

  • ProcessOrder(orderId, false);
  • SendEmail("a@gmail.com", "b@gmail.com", "Hello!", true);
  • var result = Round (1.234, false);

✅ fix:

La solución es usar enums, sobrecargas de métodos o configuraciones explícitas.

  • ProcessOrder(orderId, Priority. High);
  • SendEmail("a@gmail.com", "b@gmail.com", ContentType.HTML);
  • var result = Round (1.234, RoundingType.Up);

data clumps:

Se da cuando un grupo de datos (como nombre, apellido y correo) aparece constantemente junto en múltiples firmas de métodos.

Notese como las funciones usan EXACTAMENTE LA MISMA FIRMA. y no solo eso sino que corresponden a los mismos datos en cuestion. esto

  • function CreateUser(string firstName, string lastName, string email) { ... }
  • function SendWelcomeEmail(string firstName, string lastName, string email) { ... }
  • function UpdateProfile(int userId, string firstName, string lastName, string email) { ... }

✅ fix:

La solución es extraer estos datos en una clase u objeto dedicado para mejorar la organización.


Excessive Dependencies:

Sucede cuando una clase inyecta demasiadas dependencias en su constructor, indicando que tiene demasiadas responsabilidades.

public class OrderService
{
  private readonly IOrderRepository _orderRepository;
  private readonly IEmailService _emailService;
  private readonly IPaymentService _paymentService;
  private readonly IInventoryService _inventoryService;
  private readonly ILoggingService _loggingService;
  private readonly IDiscountService _discountService;
  private readonly INotificationService _notificationService;
  private readonly IShippingService _shippingService;
}

✅ fix:

  • La solución es dividir la clase en componentes más pequeños y enfocados.

Primitive Obsession:

Consiste en usar tipos primitivos (string, int, decimal) para representar conceptos complejos que tienen sus propias reglas de negocio (como una moneda o un email).

✅ fix:

  • La solución es crear tipos o clases específicas para encapsular la validación y el comportamiento de esos datos.

Feature Envy:

Ocurre cuando un método parece estar más interesado en los datos de otra clase que en los de su propia clase, accediendo constantemente a las propiedades de un objeto externo.

✅ fix:

  • La solución es mover el método a la clase donde residen los datos que manipula.

más posts

Metodologías Pico 14 min