logotipo Blog Giovani Da Cruz
Delphi

Cuidado com o DRY: Não Deixe Seu Código Ficar Seco Demais

4 min de leitura 58 visualizações
Code Dry
Entendendo o princípio “Code Dry”

 

O princípio DRY (Don’t Repeat Yourself), ou “Não se Repita”, é amplamente adotado no desenvolvimento de software. Ele sugere que cada pedaço de conhecimento no seu código deve existir apenas uma vez. A ideia é evitar duplicação e, com isso, melhorar a manutenção do código.

No entanto, quando o DRY vai longe demais, ele pode complicar o entendimento e a flexibilidade do seu projeto. Isso é especialmente importante para desenvolvedores que utilizam Delphi ou Lazarus, onde a abstração excessiva pode afetar diretamente a clareza e a performance do código.

 

Quando o DRY se torna um problema?

Em Delphi ou Lazarus, a tentativa de seguir DRY pode levar à abstração excessiva. Por exemplo:

 

Métodos genéricos demais

Imagine que você precisa criar funções para salvar diferentes tipos de dados no banco:

procedure SaveToDatabase<T>(Data: T);
begin
  // Lógica genérica para salvar qualquer dado
end;

À primeira vista, parece uma boa ideia. Mas se a lógica para salvar uma entidade T for complexa, como tabelas com estruturas diferentes, este método genérico pode gerar confusão e erros inesperados.

 

Em vez disso, considere criar métodos dedicados:

procedure SaveCustomer(Customer: TCustomer);
begin
  // Lógica específica para salvar clientes
end;

procedure SaveOrder(Order: TOrder);
begin
  // Lógica específica para salvar pedidos
end;

Essa abordagem pode ser mais clara e fácil de manter.

 

Excesso de reuso em formulários

Ao criar formulários (Forms) em Delphi ou Lazarus, você pode tentar usar um único formulário base para todos os casos. Isso pode resultar em formulários genéricos com muitas propriedades configuradas dinamicamente, como este exemplo:

procedure TBaseForm.SetupForm(DataType: string);
begin
  if DataType = 'Customer' then
  begin
    Label1.Caption := 'Nome do Cliente';
    Edit1.Text := '';
  end
  else if DataType = 'Order' then
  begin
    Label1.Caption := 'Número do Pedido';
    Edit1.Text := '0';
  end;
end;

Apesar de DRY, essa abordagem tende a misturar responsabilidades e dificultar a manutenção. Uma solução melhor seria criar formulários separados para cada cenário, como TFormCustomer e TFormOrder.

 

Quando um pouco de repetição é útil?

Certos cenários permitem uma repetição intencional para facilitar a legibilidade e manutenção do código. Por exemplo:

 

Classes DTO (Data Transfer Object):

DTOs geralmente mapeiam diretamente para tabelas ou endpoints de APIs, e repetir propriedades para cada DTO torna o código mais fácil de entender:

type
  TCustomerDTO = class
    ID: Integer;
    Name: string;
  end;

  TOrderDTO = class
    ID: Integer;
    OrderNumber: string;
  end;

Apesar da duplicação (ID está em ambas as classes), a clareza compensa.

 

Consultas SQL

Um código muito genérico para gerar SQL pode ser mais complicado do que consultas claras e separadas:

const
  SQL_CUSTOMER = 'SELECT * FROM Customers WHERE ID = :ID';
  SQL_ORDER = 'SELECT * FROM Orders WHERE ID = :ID';

Essa separação facilita a leitura e evita confusão.

 

Vantagens e Desvantagens do DRY

Benefícios:

  • Reduz duplicação, facilitando a manutenção.
  • Menos código duplicado significa menos chances de erros.
  • Atualizações em lógica central afetam todas as partes reutilizadas.

Desvantagens:

  • Abstrações excessivas dificultam o entendimento do código.
  • Reutilização excessiva pode tornar mudanças arriscadas e causar bugs inesperados.
  • Reduz a clareza em cenários onde a repetição é mais intuitiva.

 

Dicas para Aplicar DRY no Delphi/Lazarus

Use Helpers e Interfaces: No Delphi, helpers podem ser usados para reduzir código repetitivo sem exagerar na abstração:

type
  TEditHelper = class helper for TEdit
    procedure ClearAndFocus;
  end;

procedure TEditHelper.ClearAndFocus;
begin
  Text := '';
  SetFocus;
end;

Essa abordagem encapsula lógica comum sem complicar os componentes originais.

Evite “One-Size-Fits-All”: Nem todo formulário ou classe precisa ser genérico. Adapte cada componente ao seu propósito.

Prefira a Clareza: Um código mais explícito muitas vezes compensa pequenas repetições.

 

Conclusão

O DRY é um princípio poderoso, mas não é uma regra absoluta. Ao programar em Delphi ou Lazarus, encontre um equilíbrio entre reutilização e clareza. Um pouco de repetição bem planejada pode ser mais vantajoso do que abstrações exageradas.

E você? Já enfrentou desafios ao aplicar DRY nos seus projetos? Compartilhe nos comentários! 😊

 

 

💻 Não esqueça de compartilhar o post se ele te ajudou! 😊

 

 

📚 Obrigado por acompanhar até aqui! Explore outros posts relacionados no blog e continue evoluindo suas habilidades. Tem mais conteúdos sobre diversos assuntos te esperando! 👩‍💻 🔍✨

Até o próximo post. Valeu! 👋📖

 

 

#Delphi #Lazarus #DesenvolvimentoDeSoftware #DRY

#CleanCode #ManutençãoDeCódigo #Desenvolvedores

#CódigoLimpo #Programação #DevLife

#GiovaniDaCruz

Deixe um comentário

Seu e-mail não será publicado.