이해하기 쉬운 것, 큰 부울 명령문 (quite complex) 또는 동일한 명령문을 술어 메소드 (세분화 할 추가 코드)로 분류 한 것입니까?
옵션 1, 큰 부울 표현식 :
private static bool ContextMatchesProp(CurrentSearchContext context, TValToMatch propVal)
{
return propVal.PropertyId == context.Definition.Id
&& !repo.ParentId.HasValue || repo.ParentId == propVal.ParentId
&& ((propVal.SecondaryFilter.HasValue && context.SecondaryFilter.HasValue && propVal.SecondaryFilter.Value == context.SecondaryFilter) || (!context.SecondaryFilter.HasValue && !propVal.SecondaryFilter.HasValue));
}
옵션 2, 조건은 술어 메소드로 분류됩니다.
private static bool ContextMatchesProp(CurrentSearchContext context, TValToMatch propVal)
{
return MatchesDefinitionId(context, propVal)
&& MatchesParentId(propVal)
&& (MatchedSecondaryFilter(context, propVal) || HasNoSecondaryFilter(context, propVal));
}
private static bool HasNoSecondaryFilter(CurrentSearchContext context, TValToMatch propVal)
{
return (!context.No.HasValue && !propVal.SecondaryFilter.HasValue);
}
private static bool MatchedSecondaryFilter(CurrentSearchContext context, TValToMatch propVal)
{
return (propVal.SecondaryFilter.HasValue && context.No.HasValue && propVal.SecondaryFilter.Value == context.No);
}
private bool MatchesParentId(TValToMatch propVal)
{
return (!repo.ParentId.HasValue || repo.ParentId == propVal.ParentId);
}
private static bool MatchesDefinitionId(CurrentSearchContext context, TValToMatch propVal)
{
return propVal.PropertyId == context.Definition.Id;
}
메서드 이름을 주석으로 볼 수 있기 때문에 두 번째 방법을 선호하지만 코드의 기능을 이해하기 위해 모든 메서드를 읽어야하므로 코드의 의도를 추상화하기 때문에 문제가 있음을 이해합니다.
if
코드 중 하나 블록에서 문을. 귀하의 질문은 부울 식 에 관한 것 입니다.