对我来说,隐藏基类中的成员以破解某些东西而不是重构糟糕的设计听起来更像是一个例外......
也许我错了。但...
使用“new”关键字隐藏基类中的成员是否是代码异味?
对我来说,隐藏基类中的成员以破解某些东西而不是重构糟糕的设计听起来更像是一个例外......
也许我错了。但...
使用“new”关键字隐藏基类中的成员是否是代码异味?
这取决于意图。例如,如果目的是为了澄清具体的返回类型,那么它可能不是不合理的。这里的经典例子是DbConnection
. 通过返回而不是重新声明etc很有用,因为它具有许多特定于平台的功能,否则会很痛苦。但是,这里的关键点是该方法仍然有效,并且两种方法的目的和含义是相同的。SqlConnection
CreateCommand
SqlCommand
DbCommand
SqlCommand
DbConnection
如果你这样做并且方法做了不同的事情,或者返回不同的东西,那么在某些情况下它可能会引起混乱。有时它仍然有意义;p 如果他们做同样的事情,并且只是通过正式说明对调用者有用的实现有所不同,那么很好。