【问题标题】:How to split an overridden method into multiple files?如何将覆盖的方法拆分为多个文件?
【发布时间】:2019-10-07 15:48:53
【问题描述】:

我的问题是如何将包含override 的方法拆分为多个文件?

我了解partial 无法做到这一点。

在我的代码中,我在这个方法中有太多行。我在限制一个文件大小的 QuantConnect 平台上编码,我达到了这个限制。

public partial class TestAlgo : QCAlgorithm
{
    public override void OnData(Slice slice) // Name OnData can't be modified.  
    {
    Indices:
        {
            //First Indices
        }

        {
            //Second Indices
        }
        ...
    }
}

【问题讨论】:

  • 您不能将方法拆分为文件。如果您发现您的方法太复杂/太大/太长,则表明您应该重新设计您的方法。你如何重构取决于许多因素,它可能会拆分代码直到多个方法或类重新设计或其他东西(没有一只鞋适合所有解决方案)。
  • 看起来你有很多数据,而不是代码。你能从文件中读取数据吗?
  • 不,数据由平台提供。
  • 你能展示一下你的代码实际上是什么样子的吗?我无法想象有这么多行代码。
  • 我不能显示更多,因为昨天我使用了派生类,但是 quantconnect 的运行核心(精益)不喜欢有多个派生名称:'(虽然编译器没有显示错误。

标签: c# methods partial virtual-functions quantconnect


【解决方案1】:

很遗憾,这是不可能的。您应该重构您的代码,以便将您的方法拆分为多个方法,然后您可以使用partial,尽管我仍然不确定您为什么要这样做而不是将复杂代码重构为多个类。

【讨论】:

    【解决方案2】:

    上面写着in the documentation:

    部分方法是隐式私有的,因此它们不能是虚拟的。

    更重要的是,即使使用非虚拟方法,partial 也不允许您将 方法体 本身拆分到多个文件中。这只是一种允许一个文件声明方法而另一个文件提供实现的方式。

    因此,我们应该关注您问题的这一部分,而不是您询问的XY Problem

    我在这个方法中有太多的行。我在限制一个文件大小的 QuantConnect 平台上编码,我达到了这个限制。

    无论文件大小的限制是什么,我想这是一个相当大的限制。如果您因单一方法而达到该限制,那么您在该方法中方式的代码过多。

    关于一个方法应该有多少行代码,有很多指导方针。它们本质上是相当主观的。人们争论它是“一个屏幕”还是“两个屏幕”或其他什么。但可以肯定地说,您已经超越了这一点。

    您的方法确实需要重构为更小的部分。可能分成更小的。究竟如何做到这一点,在这里无法回答,因为您没有提供该上下文。但是,这是必须要做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多