Использование параметра out в методе void обычно является плохой идеей.Вы говорите, что использовали его «вместо того, чтобы заставить сам метод возвращать false / true, поскольку это означало бы, что DoSomething потерпел неудачу / преуспел» - я не верю, что это имеет место.Обычно в .NET сбой указывается с помощью исключения, а не истины / ложи.
out
параметры, как правило, более утомительны, чем возвращаемые значения - в частности, вам нужно иметь переменную правильного типа для обработки, поэтому вы не можете просто написать:
if (DoSomething(...))
{
// Warn user here
}
Одна альтернатива, которую вы можете рассмотреть, - это перечисление, указывающее требуемый уровень предупреждения.Например:
public enum WarningLevel
{
NoWarningRequired,
WarnUser
}
Тогда метод может вернуть WarningLevel
вместо bool
.Это бы прояснило, что вы имели в виду - хотя вы можете слегка переименовать вещи.(Трудно дать совет с метасинтаксическими именами, такими как «DoSomething», хотя я полностью понимаю, почему вы использовали это здесь.)
Конечно, другой альтернативой является то, что вам может потребоваться больше информации - например, причина для предупреждения.Это можно сделать с помощью перечисления, или вы можете захотеть дать более богатый результат полностью.