Single Responsibility Principle (SRP)
Definición: Una clase debe tener una única razón para cambiar. Code Smell Relacionado:
- Clase Grande
- Método Largo
- Mezcla de Niveles de Abstracción
Técnicas de Refactorización:
- Extract Class: Dividir una clase en dos o más clases con responsabilidades más específicas
- Extract Method: Dividir un método largo en varios métodos más pequeños y cohesivos
- Move Method/Field: Mover métodos o campos a la clase correcta
public class Order {
private List<OrderItem> items;
private Customer customer;
public void calculateTotals() { /*...*/ }
public void saveToDatabase() { /*...*/ }
public void generateInvoice() { /*...*/ }
public void sendConfirmationEmail() { /*...*/ }
}
public class Order {
private List<OrderItem> items;
private Customer customer;
public double calculateTotals() { /*...*/ }
}
public class OrderRepository {
public void save(Order order) { /*...*/ }
public Order findById(long id) { /*...*/ }
}
public class InvoiceGenerator {
public Invoice generateInvoice(Order order) { /*...*/ }
}
public class OrderNotifier {
public void sendConfirmationEmail(Order order) { /*...*/ }
}