Ваше преобразование выглядит правильным.Однако я бы улучшил это двумя способами.
Во-первых, приведения к null
не нужны в форме if
.(Оператор ?:
имеет определенные ограничения на типы, которые могут появляться в следствии и альтернативных позициях, что приводит к тому, что разработчики вставляют приведения.)
Во-вторых, операторы if
неоправданно вложены.Все это можно выразить гораздо более наглядно:
if (objInstance == null)
dateInit = null;
else if (objInstance.DateAnt != null)
dateInit = objInstance.DataAnt;
else if (objInstance.DatePost > otherObjInstance.DateCon)
dateInit = null;
else
dateInit = objInstance.DatePost;
Бизнес-логика более понятна из этой версии, чем ваша версия, я думаю.
Мы можем сделать это преобразование, используя два правила.Первое:
if (x)
X
else
{
if (y)
Y
else
Z
}
- это то же самое, что и
if (x)
X
else if (y)
Y
else
Z
, что проще на странице.
И второе:
if (x)
{
if (y)
Y
else
Z
}
else
NX
- это то же самое, что и
if (!x)
NX
else
{
if (y)
Y
else
Z
}
И теперь мы снова в первом случае и можем еще больше упростить.
Путем многократного объединения этих правил вы можете упростить множество сложных if-else
утверждений.