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