Dan*_*man 49 c# coding-style class sealed
我是否应该密封我知道的所有课程,即使没有明显的性能或安全问题,也不应该将其作为基类,或者这只是增加了什么?
Eri*_*ert 50
一个可扩展的类实现了它可以扩展的特性 - 这是一个类似于类的任何其他特性的特性,应该被视为一个,与方法没有区别.应仔细考虑所有功能,以确保它们使用该功能满足客户的目标.需要针对安全问题设计,实施,审查功能,调试,记录和维护.
所有这些都需要付出努力,而努力通常需要花钱.你花了多少钱?他们可能会对您是否应该执行此功能有意见.
基本上,您有三种选择:
1)花钱去做这个功能,这样你就可以确信它是正确的,健壮的,安全的并满足用户需求.
2)不执行上述任何操作,但无论如何都要运送该功能,并希望运送未经授权,快速实施,未经测试,未记录,未维护的未知安全风险的功能不会对您,您的雇主或您的客户造成损害.
3)密封课程.如果您发现(1)是正确的选择,请稍后开封.
我说(3)这笔钱很有价值.我总是密封我写的每个不是为了扩展性而设计的类.
Pau*_*sik 12
设置一个类sealed
是不可能的,因为这样做会在代码中设置一个严格的规则:这个类不能被继承.
如果代码不必要且令人困惑,那么代码就是残缺的.
也就是说,一种思想流派(和简单的经验法则)是你应该始终密封所有类别,因为如果有必要,它们很容易开封,但反之亦然.一些代码生成器自动执行此操作 (参见Eric Lippert上面的选项#3.基本上说同样的事情.)
我不认为它会增加任何瑕疵.相反,你清楚地表达了你对课程的意图.
类应设计为继承或密封.不幸的是,在C#中默认情况下不会对类进行密封,因此您必须自己包含关键字.就个人而言,我更倾向于使用关键字来明确地使类可用于继承,因为这会阻止人们将类用作基类,除非它被明确标记为这样.