Один из вариантов - это рефакторинг каждого из основных логических значений (canDeleteSires
, deletingSearchGroup || wasSearchGroup
) в методы с именами, которые описывают читаемую версию логики:
if (WeAreInSearchGroup())
{
if (WeAreDeletingAllSires())
{
deletedSire = new ArrayList();
deletedSire.AddRange( sireGroupBE.SireList);
}
else
{
deletedSire = GetDeleteSire(sireGroupBE.SireList);
}
}
Затем вы инкапсулируете свой текущийБулева логика внутри этих методов: как вы передаете состояние (аргументы метода или члены класса) - дело вкуса.
Это удалит логическое значение из основного метода в меньшие методы, которые напрямую задают вопрос и отвечают на вопрос.Я видел этот подход, используемый в стиле «комментарии - зло».Честно говоря, я нахожу это немного излишним, если вы одинокий волк, но в команде это может быть намного легче читать.
Из личных предпочтений я бы также инвертировал ваше первое утверждение if, чтобы вернутьсярано, это уменьшит уровень отступа всего метода:
if (searchAllSireList)
{
return result;
}
DataAccessDialog dlg = BeginWaitMessage();
bool isClose = false;
try
...
Но тогда вы можете быть наказаны толпой "множественные возвраты - зло".У меня складывается впечатление, что практика развития похожа на политику ...