c# - 是否有可能在代码中丢失过度继承?

标签 c# asp.net oop

我目前正在开发一个由其他人完成的 asp.net 站点,它的功能复杂得可笑……嗯,我是这么认为的!几乎每个类都继承自另一个类,然后是另一个类,然后是另一个类,依此类推......你必须平均达到 8/10 级才能获得基类,有时甚至更多!这些类内部还有其他类,它们遵循与 Uber 继承相同的模式。 这让我多次迷失在代码中,结果天知道在 visual studio 上打开了多少个标签页。

这是好的/正常的做法还是不好的做法?我觉得这是一种不好的做法,因为过度使用继承导致代码变得不可扩展,如此简单的事情变得过于复杂......但我可能是错的:)

谢谢!

最佳答案

是的,过度使用继承会导致意大利面条仓库。继承是一种允许封装和抽象的工具。滥用它会导致过多的抽象,然后代码的目的变得无法使用。我已经看到这种模式在命令式构造中被滥用,在实际应用操作之前,方法从一个方法传递到另一个方法。

private bool getData()
{
    return getOtherData();
}

private bool getOtherData()
{
    return getSomeExtraData();
} 

private bool getSomeExtraData()
{
    return SeeHowTediousThisIs();
}

一切正常,但它只是一个非常糟糕的维护架构。我发现这经常发生在顾问/承包商试图引入复杂性(关于工作保障)时。

关于c# - 是否有可能在代码中丢失过度继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970112/

相关文章:

c# - ASP.NET Core 中的应用程序启动代码

c# - 为什么 HttpClient.PostAsyc().Result 可以用在同步方法中?

c# - 为什么我在 Linq Query() 中没有得到 .CopyToDataTable()

javascript - 如何隐藏div

c# - 如何从 ASP.net MVC 程序中获取普通 c# 程序中的 JSON 数据?

python - Tkinter 按钮调用对象上的方法

c# - LINQPad:使用 (.NET4) VS2010 程序集时出现 "BadImageFormatException"?

c# - 将字符串转换为时间并再次返回

javascript - ES6 静态方法与非静态和 ES5 OOP

java - 是否可以从我的代码中重构另一个包中的 Java 接口(interface)?