重载函数的可读性

时间:2016-03-16 03:26:29

标签: java c# c++ coding-style overloading

我真的很讨厌重载功能,尤其是当他们互相打电话时。如果不仔细查看功能签名,很难弄清楚谁在打电话给谁。我遇到了一个恰好足够短以便发布问题的例子。

我想对此发表一些意见。

有没有人分享我的感受?

方法重载有哪些替代方法?

出于可读性目的,仅提供实际完成工作的版本(例如OnPropertyChanged(PropertyChangedEventArgs args)并强制每个人使用这个单一版本是一个好主意吗?

protected void OnPropertyChanged(string propertyName)
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

protected void OnPropertyChanged(PropertyDescriptor property)
{
    OnPropertyChanged(new TPropertyChangedEventArgs(property));
}

protected void OnPropertyChanged(string propertyName, object oldValue, object newValue)
{
    OnPropertyChanged(new TPropertyChangedValueEventArgs(propertyName, oldValue, newValue));
}

protected void OnPropertyChanged(PropertyDescriptor property, object oldValue, object newValue)
{
    OnPropertyChanged(new TPropertyChangedValueEventArgs(property, oldValue, newValue));
}

protected void OnPropertyChanged(PropertyChangedEventArgs args)
{
    if (mSuspendPropertyChanged == 0)
    {
        PropertyChanged.Raise(this, args);
    }
}

1 个答案:

答案 0 :(得分:1)

在我的工作中,我们有一个非常大的C ++应用程序。这是我的一个烦恼,因为很难搜索代码库并确定重构是否安全。只要有可能,如果我需要处理代码并且存在重载函数,我只需将函数重命名更长时间(可能是 OnPropertyChanged_uses_object_args )。然后,让编译器帮助您(如果它是C ++)。一旦您构建了应用程序并成功链接,您就可以更轻松地进行重构。

当然,这不适用于后期语言。如果是这种情况,那么你需要一个适用于重载的好功能浏览器。最好的IDE有一个。