Как предотвратить дублирование кода при определении нескольких методов с одинаковым именем? - PullRequest
0 голосов
/ 23 апреля 2019

Недавно я обнаружил, что вы можете определять несколько методов с одинаковыми именами, если их аргументы различаются (я думаю, это называется перегрузкой методов). Так, например, в сценарии у меня есть метод с именем getDate(int date), а другой - с именем getDate(). Единственное различие между этими методами состоит в том, что тот, который не принимает аргумент, использует статическое целое число, определенное в классе, вместо аргумента date.

Я использовал эту логику, по крайней мере, для 5 различных методов в классе, однако дублирование кода выглядит очень грязно. Есть ли более элегантное решение?

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

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

Я буду использоватьваш пример:

Date GetDate(int date) {
    // -- do whatever you do here
    return DoAThing(date);
}

Date GetDate() {
    return GetDate(staticVar);
}

Таким образом, если вы хотите изменить способ получения даты, вам не придется менять код в нескольких местах, а при изменении GetDate(int date) другие ваши функцииэтот призыв просто последует их примеру.

0 голосов
/ 24 апреля 2019

Просто вызывайте методы по мере необходимости, например

//To Get the Date normally
DateTime date = getDate();
//Otherwise
date = getDate(1, DateTime.Today);

У вас не должно возникнуть проблем с их вызовом. Они должны быть корректно перегружены на единицу, потому что я проверил это с помощью моего редактора.

...