Sobes.tech
Junior

O que é o princípio DRY e quais os aspetos que inclui?

sobes.tech IA

Resposta da IA

O princípio DRY (Don't Repeat Yourself) significa não te repitares. É um princípio fundamental do desenvolvimento de software que visa reduzir a redundância de código e dados. Cumprir este princípio melhora a manutenção, legibilidade e reduz a probabilidade de erros.

Aspectos do princípio DRY:

  • Evitar a duplicação de código: Os blocos de código repetidos são colocados em funções, classes, módulos.
    # Mau:
    def process_user_data(user):
        print(f"Processando dados para o utilizador: {user['name']}")
        # Muitos passos de processamento
        print("Processamento de dados terminado.")
    
    def process_order_data(order):
        print(f"Processando dados para a encomenda: {order['id']}")
        # Muitos passos de processamento (semelhantes aos dados do utilizador)
        print("Processamento de dados terminado.")
    
    # Bom:
    def process_data(item_type, item_id):
        print(f"Processando dados para {item_type}: {item_id}")
        # Passos de processamento partilhados
        print("Processamento de dados terminado.")
    
    process_data("user", user['name'])
    process_data("order", order['id'])
    
  • Evitar a duplicação de dados: A mesma informação é armazenada num só lugar (por exemplo, parâmetros de configuração, constantes).
    // Mau:
    {
      "api_url_users": "https://api.example.com/users",
      "api_url_orders": "https://api.example.com/orders"
    }
    
    // Bom:
    {
      "base_api_url": "https://api.example.com",
      "endpoints": {
        "users": "/users",
        "orders": "/orders"
      }
    }
    
  • Evitar a duplicação de lógica de negócio: As regras e algoritmos são implementados uma única vez.
    // Mau:
    // Validação em múltiplos locais
    if (orderAmount < 0) {
        throw new InvalidOrderException("O montante não pode ser negativo.");
    }
    // Verificação semelhante noutra função
    
    // Bom:
    // Lógica de validação centralizada
    public void validateOrderAmount(double amount) {
        if (amount < 0) {
            throw new InvalidOrderException("O montante não pode ser negativo.");
        }
    }
    
  • Evitar a duplicação de configuração: As configurações da aplicação são colocadas em ficheiros de configuração ou armazéns centralizados.
  • Evitar a duplicação na documentação: A informação é estruturada e faz referência a uma fonte única.

Seguir o princípio DRY leva a sistemas mais modulares, fáceis de ler e escalar, o que é fundamental para QA, pois simplifica testes e a localização de defeitos.