У меня есть несколько подобных методов, например, например. CalculatePoint (...) и CalculateListOfPoints (...). Иногда они могут не сработать, и об этом необходимо сообщить вызывающему абоненту. Для CalculateListOfPoints, который возвращает общий список, я мог бы вернуть пустой список и потребовать от вызывающего проверить это; однако Point является типом значения, поэтому я не могу вернуть там null.
В идеале мне хотелось бы, чтобы методы "выглядели" одинаково; одним из решений может быть определение их как
public Point CalculatePoint(... out Boolean boSuccess);
public List<Point> CalculateListOfPoints(... out Boolean boSuccess);
или как вариант вернуть Поинт? для CalculatePoint и вернуть значение null, чтобы указать на сбой. Это означало бы необходимость возврата к типу, не допускающему значения NULL, что кажется чрезмерным.
Другой путь - вернуть логическое значение boSuccess, получить результат (Point или List) в качестве параметра out и называть их TryToCalculatePoint или что-то в этом роде ...
Какая лучшая практика?
Изменить: я не хочу использовать исключения для управления потоком! Иногда ожидается неудача.