Я ищу альтернативы возвращению нулевого значения. До С# 7 общая картина была
public bool TryParseInt(string data, out int result);
Но теперь мы можем также использовать кортеж значения и деконструкторы для чего-то вроде этого
public (bool parsed, int result) TryParseInt(string data){}
var (parsed, result) = TryParseInt("0");
if(parsed == false)
return;
Стоит ли писать такие функции? Я сильно не люблю все, что "вне", потому что это может быть легко пропущено при поиске ошибок.
В качестве плюса для использования значения кортежа вместо возврата нулевого значения при ошибке: вы можете обрабатывать ошибки внутри вашей функции.
Как минус вы создаете новую дополнительную переменную каждый раз, и код выглядит неаккуратно, когда вы используете этот шаблон все время.