假设我在抽象/父类中定义了方法的实现,然后创建了一个预计使用此方法的派生类。如果派生类不重写方法的实现,为了让阅读代码的人清楚起见,仍然定义它并调用 super 是一个好习惯吗?
class Foo{
speak() { console.log('Hi') }
}
class Bar extends Foo {
// Should I include this? :
speak(){
super.speak()
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的唯一好处是可读性和断言 aBar是预期的speak(),但它也是多余的,因为它在实现方面没有添加任何内容。所以我想知道声明派生类时的最佳实践是什么?
这样做是没有意义的,extends Foo很明显,这Bar可能会继承 的功能Foo,而且它引入了维护危险:
speak应该返回一个值并进行Foo相应的编辑?thenBar.speak是错误的,因为它不返回调用的结果super.speak()。Foo? 现在,如果你要遵循在子类中重新定义它的规则,你必须找到每个子类来添加一个新方法\xc2\xa0\xe2\x80\x94,不可避免地会缺少一些。还有效率问题:您无缘无故地在调用堆栈中引入了另一层。
\n虽然在这些事情上经常有意见的余地,但我认为对此的共识是普遍的:除非您需要自定义方法的行为,否则不要重写方法。
\n| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |