কী বোঝা সহজ, একটি বড় বুলিয়ান স্টেটমেন্ট (বেশ জটিল), বা একই বক্তব্যটি প্রাক্কলিত পদ্ধতিতে বিভক্ত হয়ে পড়েছে (পড়ার জন্য প্রচুর অতিরিক্ত কোড পড়ে)?
বিকল্প 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
বক্তব্য নেই। আপনার প্রশ্নটি বুলিয়ান এক্সপ্রেশন সম্পর্কে ।