2016-03-16 6 views
-1

Я действительно ненавижу перегруженные функции, особенно когда они звонят друг другу. На самом деле трудно понять, кто звонит, который не очень внимательно смотрит на подпись функции. Я наткнулся на один пример, который оказался достаточно коротким, чтобы опубликовать его как вопрос.Считываемость перегруженных функций

Хотелось бы высказать некоторые замечания по этому вопросу.

Кто-нибудь разделяет мои чувства?

Каковы альтернативы перегрузки метода?

В целях удобочитаемости, лишь предоставляет версию, что на самом деле делает работу (напр. OnPropertyChanged (PropertyChangedEventArgs арг) и заставить все использовать эту единую версию хорошую идею?

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); 
    } 
} 
+3

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что это мнение основано. – hagrawal

+0

@hagrawal Да, это мнение основано. На самом деле это вопрос, чтобы просить мнения. Считываемость - это субъективная вещь. Судя по тому, легко ли читать фрагмент кода или не требует опроса мнений. –

+1

Посмотрите страницу справки, в которой описаны типы вопросов, которые вы не задали: [help/dont-ask]. На этой странице вы нажимаете много пуль. –

ответ

1

В своей работе мы имеют очень большое приложение на C++. Это один из моих любимых мотивов, потому что очень сложно найти базу кода и определить, безопасен ли рефакторинг. Когда это возможно, если мне нужно работать с кодом и есть перегруженные функции, просто переименуйте функцию дольше (возможно, OnPropertyChanged_uses_object_args). Затем пусть компилятор вам поможет (если это C++). e, созданное и успешно связанное, вы можете сделать свой рефакторинг гораздо проще.

Конечно, это не работает с поздними языками. Если это так, вместо этого вам нужен хороший браузер функций, который работает с перегрузками. У большинства хороших IDE есть один.

Смежные вопросы