Parece que as diretrizes oficiais da Microsoft sobre vedação evoluíram desde que essa pergunta foi feita há cerca de 9 anos, e mudaram de uma filosofia de aceitação (selar por padrão) para cancelar (não selar por padrão):
X NÃO feche aulas sem ter um bom motivo para fazê-lo.
Selar uma classe porque você não consegue pensar em um cenário de extensibilidade não é um bom motivo. Os usuários do framework gostam de herdar de classes por vários motivos não óbvios, como adicionar membros de conveniência. Consulte Classes não lacradas para obter exemplos de motivos não óbvios pelos quais os usuários desejam herdar de um tipo.
Boas razões para selar uma classe incluem o seguinte:
- A classe é uma classe estática. Consulte Projeto de classe estática.
- A classe armazena segredos sensíveis à segurança em membros protegidos herdados.
- A classe herda muitos membros virtuais e o custo de lacrá-los individualmente superaria os benefícios de deixar a classe sem lacre.
- A classe é um atributo que requer uma consulta de tempo de execução muito rápida. Os atributos selados têm níveis de desempenho ligeiramente mais altos do que os não selados. Veja Atributos.
X NÃO declare membros protegidos ou virtuais em tipos selados.
Por definição, os tipos selados não podem ser herdados. Isso significa que os membros protegidos em tipos selados não podem ser chamados e os métodos virtuais em tipos selados não podem ser substituídos.
✓ CONSIDERE os membros de selagem que você anular. Os problemas que podem resultar da introdução de membros virtuais (discutidos em Membros virtuais) também se aplicam a substituições, embora em um grau um pouco menor. Vedar uma substituição protege você desses problemas a partir daquele ponto na hierarquia de herança.
Na verdade, se você pesquisar a base de código ASP.Net Core , encontrará apenas cerca de 30 ocorrências de sealed class
, a maioria das quais são atributos e classes de teste.
Eu realmente acho que a conservação da imutabilidade é um bom argumento a favor da vedação.