我是否应该将所有我认为不应该被用作基础类的课程封印?

我是否应该把我所知道的所有class级都封为基础class,即使没有切实的performance或安全考虑,或者这只不过是加重了这个问题?

一个可扩展的类实现了它可以被扩展的特性 – 这是类的任何其他特性的function,应该被视为一个,与方法没有区别。 应仔细考虑所有function,以确保它们使用该function符合客户的目标。 function需要devise,实施,审查安全问题,debugging,logging和维护。

所有这些都需要努力,而努力通常需要花钱。 你花了谁的钱? 他们可能会对是否应该这样做有意见。

基本上,你有三个select:

1)花钱做function,让你有信心是正确的,健壮的,安全的,并满足用户的需求。

2)不要做以上任何事情,但无论如何都要发布这个function,并且希望运送一个不知名的,快速实施的,未经testing的,没有logging的,没有维护的function,但是这个function未知的安全风险不会损害您,您的雇主或您的客户。

3)封印课程。 如果您发现(1)是正确的select,请稍后解除密封。

我说(3)对于钱来说是很好的价值。 我总是密封每个我写的不是为了可扩展性而devise的课程。

设置一个类被sealed不是残酷的,因为这样做会在你的代码中设置一个严格的规则:这个类不能被inheritance。

如果没有必要和困惑的话,代码只能是粗俗的。

也就是说,一个思想stream派(和简单的经验法则)是,你应该总是封闭所有的类,因为如果有必要的话很容易打开它们,反之亦然。 一些代码生成器自动执行此操作 (见Eric Lippert的上述选项#3,基本上是这样说的。)

我不认为它是根本就join的。 相反,你清楚地expression了你对class级的意图。

类应该被devise为inheritance或被封闭。 不幸的是,C#中默认的类不是封闭的,所以你必须自己包含关键字。 就个人而言,我希望一个关键字明确地使类可用于inheritance,因为这将阻止人们使用类作为基类,除非明确标记为这样的类。

是。 如果没有其他的东西,这是一个让别人知道他们不应该走得更远的路标。