Допустим, я создаю класс с именем SomeLibrary. Этот класс имеет метод Calculate, который принимает один аргумент - экземпляр SomeClass.
class SomeLibrary
{
void Calculate(SomeClass argument)
{
//Some algorithm...
//argument's value is changed!
argument.value = 3;
}
}
Результатом вычисления является модифицированный SomeClass. Как проинформировать пользователя об этом? Я вижу 2 решения:
- Вернуть SomeClass вместо void - в этом случае аргумент все еще изменяется, но на этот раз он также возвращается. Недостатком этого является то, что пользователь может не ожидать, что аргумент будет изменен, возможно, ему нужно сохранить его версию до изменения.
- В Вычислении может быть сделана глубокая копия аргумента, и этот будет возвращен. Однако создание глубокой копии не всегда является простой задачей.
Что вы думаете?