Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inheritance 在派生类中抛出NotSupportedException是否被认为是不好的做法?_Inheritance_Notsupportedexception - Fatal编程技术网

Inheritance 在派生类中抛出NotSupportedException是否被认为是不好的做法?

Inheritance 在派生类中抛出NotSupportedException是否被认为是不好的做法?,inheritance,notsupportedexception,Inheritance,Notsupportedexception,有时,人们希望在派生类中隐藏一个方法,但又不想违反Liskov替换原则,因此他们将其保留在派生类中,并抛出一个NotSupportedException,可能带有该方法抛出的注释 如果人们在传递派生类之前不去阅读每个方法上的每个注释,那么这种做法就把问题从编译时问题转移到运行时问题上了,从这个意义上说,这种做法是不是同样糟糕,甚至更糟?我同意,如果子类不支持其超类中的方法,那么作为一种规则,它可能不应该这样做我们将扩展该类。除了需要运行时检查来处理您提到的可能的异常(这在需要优化性能的情况下可能

有时,人们希望在派生类中隐藏一个方法,但又不想违反Liskov替换原则,因此他们将其保留在派生类中,并抛出一个
NotSupportedException
,可能带有该方法抛出的注释


如果人们在传递派生类之前不去阅读每个方法上的每个注释,那么这种做法就把问题从编译时问题转移到运行时问题上了,从这个意义上说,这种做法是不是同样糟糕,甚至更糟?

我同意,如果子类不支持其超类中的方法,那么作为一种规则,它可能不应该这样做我们将扩展该类。除了需要运行时检查来处理您提到的可能的异常(这在需要优化性能的情况下可能是一个问题),但是,我认为这种方法更大的问题是它将责任从子类转移到需要使用它的每个类,使您的软件更少封装,因此更难维护和推理(软件越大,问题就越大)

尽管如此,这个问题本质上是主观的。如果这种方法对你有效,一定要这样做。我个人更喜欢简单的API而不是复杂的API,但这就是我