Способ перегрузки стандартного протокола? - PullRequest
1 голос
/ 01 сентября 2010

Если вы добавляете третью сигнатуру для метода, вы делаете второй и третий варианты прямым вызовом первого (реализованный вариант), или вы делаете третий вызов вторым, а второй вызов первым.

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

Мне было интересно, знает ли кто-нибудь о каких-либо «Стандартный рекомендуемый способ» выполнения этого или если это более личное предпочтение или зависит от контекста.Мне всегда интересно, когда я добавляю новую подпись в существующий перегруженный метод.У вас почти всегда есть выбор, как это сделать.

Патетически глупый Пример:

Существующие методы:

public String concatenate(String one, String two, String three) {
    return(one+two+three);
}

public String concatenate(String one, String two) {
    return(concatenate(one, two, ""));
}

Чтобы добавить следующий, я делаю:

public String concatenate(String one) {
    return(concatenate(one,"",""));
}

ИЛИ

public String concatenate(String one) {
    return(concatenate(one,""));
}

и да, я знаю, что последний метод по сути является неоперативным.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2010

Я предпочитаю, когда это возможно, создавать закрытый метод, который вызывают все другие загрузчики.

private String _concatenateBase(String one, String two) 
{
    return one + two;
}


public String concatenate(String one, String two, String three) 
{
    return _concatenateBase(one+two, three);
}
1 голос
/ 01 сентября 2010

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

Конечно, в некоторых случаях перегрузки не структурированы таким линейным способом: может быть несколько перегрузок, которые все вызывают одну и ту же «базовую», но не могут вызывать друг друга, если они предоставляют разные параметры.

...