即使没有明显的性能或安全问题,我是否应该封闭所有我知道不应该作为基类使用的类,还是这样做只会增加冗余代码?
即使没有明显的性能或安全问题,我是否应该封闭所有我知道不应该作为基类使用的类,还是这样做只会增加冗余代码?
将一个类设置为sealed
并不是无用的,因为这样做会在你的代码中建立一条严格的规则:这个类不能被继承。
只有当代码是不必要和令人困惑的时候,它才是无用的。
话虽如此,有一种思路(也是简单的经验法则)认为你应该总是将所有类都标记为sealed,因为如果需要,可以轻松取消sealed的限制,但反之却不行。一些代码生成器会自动这样做。(参见Eric Lippert上面的第三个选项,它本质上说的是同样的事情。)
我认为这并不是添加冗余代码。相反,您清晰地表达了类的意图。
类应该设计为可继承或密封。不幸的是,在C#中,默认情况下类不是密封的,因此您必须自己包含关键字。个人而言,我更喜欢使用一个关键字来明确表示类可用于继承,因为这可以防止人们将一个类用作基类,除非它被明确标记为这样。