Вы можете столкнуться с проблемами в зависимости от языка, который вы используете, и от того, как он обрабатывает операторы return или операторы присваивания. В некоторых случаях он может дать вам ссылку или значения в других случаях.
Например, скажем, у вас есть класс PrimeCalculator, который вычисляет простые числа, а затем у вас есть другой класс, который делает что-то с этими простыми числами.
public PrimeCalculator calculatorObject = new PrimeCalculator();
Vector<int> primeNumbers = calculatorObject.PrimeNumbersVector;
/* do something complicated here */
primeNumbers.clear(); // free up some memory
Когда вы используете этот материал позже, возможно, в другом классе, вам не нужны дополнительные вычисления для повторного вычисления чисел, поэтому вы используете тот же calculatorObject.
Vector<int> primes = calculatorObject.PrimeNumbersVector;
int tenthPrime = primes.elementAt(9);
В этот момент может быть не совсем ясно, ссылаются ли простые числа и простые числа на один и тот же Вектор. Если они это сделают, попытка получить десятое простое число из простых чисел приведет к ошибке.
Вы можете сделать это таким образом, если вы осторожны и понимаете, что именно происходит в вашей ситуации, но у вас меньше погрешность, используя функции для возврата значения вместо непосредственного присвоения переменной.