Я пытаюсь формализовать использование ключевого слова "out" в c # для проекта, на котором я работаю, особенно в отношении любых открытых методов. Кажется, я не могу найти какие-либо лучшие практики и хотел бы знать, что хорошо или что плохо.
Иногда я вижу некоторые методы подписи, которые выглядят так:
public decimal CalcSomething(Date start, Date end, out int someOtherNumber){}
На данный момент это просто чувство, это не устраивает меня. По какой-то причине я бы предпочел посмотреть:
public Result CalcSomething(Date start, Date end){}
где результатом является тип, который содержит десятичное число и someOtherNumber. Я думаю, что это облегчает чтение. Это позволяет расширять Result или добавлять свойства без нарушения кода. Это также означает, что вызывающая сторона этого метода не должна объявлять "someOtherNumber" в локальной области перед вызовом. Из ожиданий использования не все абоненты будут заинтересованы в "someOtherNumber".
В отличие от этого, единственные случаи, о которых я могу думать прямо сейчас в рамках .Net, где параметры out имеют смысл, - это методы, подобные TryParse (). Это фактически заставляет вызывающую сторону писать более простой код, в результате чего вызывающая сторона в первую очередь будет интересоваться параметром out.
int i;
if(int.TryParse("1", i)){
DoSomething(i);
}
Я думаю, что "out" следует использовать только в том случае, если тип возвращаемого значения - bool, а ожидаемое использование - это то, где параметры "out" всегда будут интересны вызывающему объекту.
Мысли