1

所以我今晚花了一个晚上来阅读关于辅助课程的信息,并且有很多人建议避免使用辅助课程。我喜欢这个人的残暴: http: //simpleprogrammer.com/2010/04/12/should-i-leave-that-helper-class/。这让我问自己,如果不是助手班,那还有什么?

所以在我的 WPF 应用程序中,我有 3 页。在每一页上我都有标签,我使用这个方法来制作动画:

    public static void SetUpAnimation()
    {
        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = -nameLabel.ActualWidth;
        doubleAnimation.To = nameCanvas.ActualWidth;
        doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
        doubleAnimation.Duration = new Duration(TimeSpan.Parse("0:0:10"));
        nameLabel.BeginAnimation(Canvas.RightProperty, doubleAnimation);
    }

所以现在我创建了静态类LabelAnimator并把这个方法放上去,一切正常。但是当我添加更多与此动画师无关的代码时会发生什么,并且我也在其他页面中使用它。例如更新该标签的计时器。代码是相同的,这意味着我将复制粘贴到每个 WPF 页面(类)上。

通过这种方法,我将不得不创建另一个帮助类,如 LabelTimer。这意味着我将有 2 个类,每个类有 1 个方法。我不知道这是多少浪费,但更让我担心的是这种好的方法,有没有比为这样的每种方法做辅助类更好的方法?

但这只是一个例子,不要告诉我应该为这个功能做什么,而是对类之间重复的任何方法都是全局的。

正如我在这里读到的:https ://softwareengineering.stackexchange.com/questions/107458/how-to-remove-duplicate-code-in-general消除同一层次结构类中重复代码的正确方法是提取方法和把它拉起来,据我所知,这是我正在做的事情。将方法放入帮助类。

但是这样好吗?拥有 10 个不同的辅助类(如果您不想将所有方法放在一个辅助类中,并使其非常混乱)是消除同一类层次结构中重复方法的唯一选择吗?

过去,当我还是个孩子的时候,我总是担心程序会起作用,现在我已经长大了,我不得不考虑这样的事情。但我喜欢编码,因为这样的事情;)

感谢您的任何建议。

4

2 回答 2

0

它会阻止代码被重用,并且只会帮助你的代码的一部分,在这种情况下你甚至不需要一个新的类。

您可以将额外的代码放在您正在调用的类之外​​。

于 2013-08-26T01:28:57.007 回答
0

“拉起来”并不总是意味着创建一个静态帮助类,关于你上面的例子,你可以为你的 3 个页面创建一个包含相同动画的基类(但实际上这仅属于 Xaml)

public LabelPage : Page
{
    public virtual void SetUpAnimation()
    {
        DoubleAnimation doubleAnimation = new DoubleAnimation();
        doubleAnimation.From = -nameLabel.ActualWidth;
        doubleAnimation.To = nameCanvas.ActualWidth;
        doubleAnimation.RepeatBehavior = RepeatBehavior.Forever;
        doubleAnimation.Duration = new Duration(TimeSpan.Parse("0:0:10"));
        nameLabel.BeginAnimation(Canvas.RightProperty, doubleAnimation);
    }
}

如果您需要添加/更改动画,您可以在课堂上覆盖

public Page1 : LabelPage
{
    public override void SetUpAnimation()
    {
       base.SetUpAnimation();

       // more stuff to do;
    }
}

IMO 只要不滥用辅助类就没有问题,我个人发现过度使用扩展方法来做辅助类比实体类更成问题

于 2013-08-26T01:38:51.543 回答