У меня есть следующий метод и интерфейс:Является ли это нарушением единого принципа ответственности?
public object ProcessRules(List<IRule> rules)
{
foreach(IRule rule in rules)
{
if(EvaluateExpression(rule.Exp) == true) return rule.Result;
}
//Some error handling here for not hitting any rules
}
public interface IRule
{
Expression Exp;
Object Result;
int Precedence;
}
Поскольку правила имеют приоритет, они должны на самом деле никогда не будет обрабатываться в порядке. Это приводит меня (я думаю) к трем решениям:
- Порядок сортировки перед передачей их в оценщик.
- Измените тип параметра на то, что обеспечивает порядок сортировки.
- Сортировка в оценке.
Мне нравится вариант 3, потому что он всегда гарантирует, что он отсортирован, и мне нравится вариант 1, потому что он кажется более сплоченным. И вариант 2 кажется хорошим компромиссом.
Является ли сценарий подобным контексту конкретным/субъективным, или есть ли действительно лучшая практика для применения здесь?
"== true" является избыточным. –
Параметр может быть IEnumerable. –
TrueWill