method - sealed class c# español
¿Debería sellar todas las clases que sé que nunca deberían usarse como una clase base? (4)
No lo consideraría como agregar cruft en absoluto. En cambio, estás expresando claramente tus intenciones para la clase.
Las clases deben diseñarse para herencia o ser selladas. Desafortunadamente, las clases no están selladas por defecto en C # por lo que debe incluir la palabra clave usted mismo. Personalmente, hubiera preferido una palabra clave para hacer explícitamente que las clases estén disponibles para la herencia, ya que eso evitaría que las personas usen una clase como clase base a menos que se haya marcado explícitamente como tal.
¿Debo sellar todas las clases que sé que nunca deberían usarse como una clase base, incluso cuando no hay problemas tangibles de rendimiento o seguridad, o es solo agregar cruft?
Sí. Si nada más, es un letrero que les informa a los demás que no deben ir más lejos en el camino.
Una clase que es extensible implementa la característica de que se puede extender: es una función como cualquier otra característica de la clase, y debe tratarse como una, no diferente de un método. Todas las características deben pensarse detenidamente para garantizar que cumplan los objetivos del cliente que utiliza la función. Las características deben ser diseñadas, implementadas, revisadas por problemas de seguridad, depuradas, documentadas y mantenidas.
Todo lo que cuesta esfuerzo y esfuerzo generalmente requiere el desembolso de dinero. ¿De quién es el dinero que está gastando? Podrían tener una opinión sobre si deberías hacer esta función o no.
Básicamente, tienes tres opciones:
1) Gaste el dinero para hacer la función para que tenga la seguridad de que es correcta, robusta, segura y cumple con las necesidades del usuario.
2) No realice ninguna de las acciones anteriores pero envíe la característica de todos modos y espere que el envío de una función no diseñada, implementada rápidamente, no verificada, no documentada, no mantenida con riesgos de seguridad desconocidos no lo perjudique a usted, a su empleador ni a sus clientes.
3) Sella la clase. Desbloquee más tarde si encuentra que (1) fue la elección correcta.
Yo digo que (3) tiene una buena relación calidad-precio. Siempre cierro todas las clases que escribo que no fueron diseñadas para extensibilidad.
Establecer una clase para ser sealed
no es simple, ya que al hacerlo establece una regla estricta en su código: Esta clase no se puede heredar.
El código es solo cruft si es innecesario y confuso.
Dicho esto, una escuela de pensamiento (y simple regla general) es que siempre debe sellar todas las clases, ya que es fácil destrabarlas si es necesario, pero no al revés. Algunos generadores de código hacen esto automáticamente. (Véase la opción # 3 de Eric Lippert. Básicamente dice lo mismo).