какой шаблон использовать для метода с несколькими аргументами? - PullRequest
1 голос
/ 14 мая 2010

У меня есть метод со следующей подписью: foo (Образец образца, Аликвота Аликвота)

"foo" необходимо изменить объект Sample, либо первый аргумент, либо второй аргумент, который он может извлечь из своего образца. Например:

foo (Sample sample, Aliquot aliquot) {
    Sample out = null;
    if (sample != null)
       out = sample
    else
       out = aliquot.getSample()

    return out;
}

Но это так не элегантно, что кроме чтения API разработчик не знает, что ссылка на первый аргумент переопределяет образец второго аргумента.

Теперь я могу изменить "foo" на foo (панель SomeMagicalObject), где SomeMagicalObject является кортежем для Sample и Aliquot и содержит некоторую логику ... и т.д.

Но мне интересно, есть ли какие-то закономерности для этого вопроса?

Ответы [ 3 ]

2 голосов
/ 14 мая 2010

Я бы либо изменил его на foo(Sample sample), чтобы вызывающий передавал объект Sample, либо изменил бы его на foo(Aliquot aliquot), и чтобы вызывающий установил Sample на Aliquot.

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

0 голосов
/ 14 мая 2010

Зависит от того, что представляет собой большая картина, но если вы не управляете объектом Sample, вы всегда можете просто сделать это без метода:

Sample foo = (sample! = Null)? пример: aliquot.getSample ();

0 голосов
/ 14 мая 2010
sample.foo( aliquot );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...