Нет лучшего способа использования .
Каждая логика c на основе условий вашего приложения может быть построена с 3 различными подходами:
If- else ветвление
if (appliable) { /* do something */ }
else { /* do something different */ }
If-else лучше всего подходит для коротких логи c ветвление. Если у вас не так много условий, это хороший инструмент.
Переключение ветвления
switch (logLevel)
{
case LogLevel.Fatal:
errorLogger.Fatal(exception);
break;
case LogLevel.Error:
errorLogger.Error(exception, message);
break;
case LogLevel.Warning:
logger.Warn(message);
break;
case LogLevel.Info:
logger.Info(message);
break;
case LogLevel.Debug:
logger.Debug(message);
break;
case LogLevel.Trace:
logger.Trace(message);
break;
default:
throw new ArgumentOutOfRangeException(nameof(level), level, null);
}
Обычно switch
используется для средней логики c ветвления или сопоставления с образцом (C# 8.0 получает более хороший синтаксис для этого). Если у меня средний размер ветвления логики c - я предпочитаю его использовать.
Шаблон стратегии
Если у вас большое ветвление логики c - вы должны использовать шаблон стратегии.
Этот шаблон довольно прост:
public class StrategyUser
{
private IStrategy strategy;
public StrategyUser(IStrategy strategyToUse)
{
this.strategy = strategyToUse;
}
public void SetNewStrategy(IStrategy newStrategy)
{
this.strategy = newStrategy;
}
}
Стратегия может быть использована для избавления от if-else ад . Также вы можете изменить stretegy непосредственно во время выполнения, чтобы изменить поведение объекта.
Я думаю, что для вашей задачи лучше всего использовать if
ветвление. Это более уместно.