Sobes.tech
Junior

Com que frequência você usa herança nos seus projetos?

sobes.tech IA

Resposta da IA

Uso herança com moderação. É útil para implementar o princípio Don't Repeat Yourself (DRY) e para criar hierarquias de tipos, mas o uso excessivo pode levar a ligações rígidas e problemas de teste. Prefiro composição ou interfaces sempre que possível.

Exemplos de uso de herança:

  • Implementação do método template.
  • Criação de classes base para lidar com blocos lógicos comuns, por exemplo, em componentes de UI ou manipuladores de comandos.
// Classe base para processar dados
public abstract class DataProcessor
{
    public void ProcessData()
    {
        LoadData();
        TransformData();
        SaveData();
    }

    protected abstract void LoadData();
    protected abstract void TransformData();
    protected abstract void SaveData();
}

// Classe concreta que herda da base
public class CsvDataProcessor : DataProcessor
{
    protected override void LoadData()
    {
        // Lógica de carregamento de CSV
    }

    protected override void TransformData()
    {
        // Lógica de transformação de CSV
    }

    protected override void SaveData()
    {
        // Lógica de salvamento em CSV
    }
}

Evito herança quando ela cria um "diamante" ou quando a subclasse não é uma relação verdadeira de "é" com a classe base (Princípio de Substituição de Liskov). Em vez disso, uso interfaces para definir contratos e composição para montar funcionalidades a partir de objetos menores e independentes.