Передача параметра или его возврат из функции

Как понятно из названия, какой подход предпочесть?

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

Я просто пытаюсь сформулировать вопрос на этом примере.

List<String> result = new ArrayList<String>();

for (int i = 0; i < SOME_NUMBER_N; i++) {
    fun(SOME_COLLECTION.get(i), result);
}

// in some other class
public void fun(String s, List<String> result) {
    // populates result
}

против

List<String> result = new ArrayList<String>();

for (int i = 0; i < SOME_NUMBER_N; i++) {
    List<String> subResult = fun(SOME_COLLECTION.get(i));
    // merges subResult into result
    mergeLists(result, subResult);
}

// in some other class
public List<String> fun(String s) {
    List<String> res = new ArrayList<String>();
    // some processing to populate res
    return res;
}

Я понимаю, что один передает ссылку, а другой нет.

Какой из них мы должны предпочесть (в различных ситуациях )и почему?

Обновление:Учитывайте это только для изменяемых объектов.

7
задан Krayo 17 March 2016 в 10:32
поделиться