Java 重载函数的可读性

Java 重载函数的可读性,java,c#,c++,coding-style,overloading,Java,C#,C++,Coding Style,Overloading,我真的很讨厌重载函数,尤其是当它们相互调用时。如果不仔细查看函数签名,就很难确定是谁在调用谁。我遇到了一个例子,刚好短到可以作为问题发布 我想对此发表一些评论 有人分享我的感受吗 方法重载的替代方案是什么 出于可读性目的,只提供实际执行任务的版本(例如OnPropertyChanged(PropertyChangedEventArgs args))并强制每个人使用此单一版本是一个好主意吗 protected void OnPropertyChanged(string propertyName)

我真的很讨厌重载函数,尤其是当它们相互调用时。如果不仔细查看函数签名,就很难确定是谁在调用谁。我遇到了一个例子,刚好短到可以作为问题发布

我想对此发表一些评论

有人分享我的感受吗

方法重载的替代方案是什么

出于可读性目的,只提供实际执行任务的版本(例如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);
    }
}

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


当然,这不适用于后期绑定语言。如果是这样的话,你需要一个好的能处理重载的函数浏览器。大多数好的IDE都有一个。

我投票决定不讨论这个问题,因为它是基于观点的。@hagrawal是的,它是基于观点的。实际上这个问题是为了,征求意见。真的吗涉猎能力是一个主观因素。判断一段代码是否易于阅读需要对意见进行调查。请查看“帮助”页面,该页面描述了哪些类型的问题是不应该问的:。您在该页面中遇到了许多关键问题。