Для методов, возвращающих типы классов, я бы предпочел, чтобы метод TryGetFnord()
, который возвращает ноль при ошибке, был предпочтительнее метода, который возвращает bool
и сохраняет свой результат в параметре ref
. Среди прочего, можно включить первый стиль в ковариантный интерфейс, тогда как нельзя сделать это с последним стилем. Однако я бы предложил оставить в названии слово «Попробуйте», чтобы указать, что метод может не сработать.
Другим подходом, который следует рассмотреть, будет что-то вроде: dataType TryGetFnord(ref TryGetFnordResult result)
, где TryGetFnordResult
может быть типом значения или типом неизменяемого класса, который указывает, была ли операция выполнена успешно. Это сохранит преимущества, связанные с ковариацией, и позволит возвращать больше полезной информации, чем просто сбой. В случае сбоя операции она, вероятно, должна вернуть значение по умолчанию для своего типа, но вызывающая сторона должна проверить наличие ошибок, используя параметр result
.