Resharper は次のように変更しました (もちろん、私の承認を得て):
private static Subdepartment GetSubdepartmentForXMLElement(XElement subdept)
{
return new Subdepartment
{
Id = Convert.ToInt32(subdept.Element("Id")),
AccountId = Convert.ToDouble(subdept.Element("AccountId ")),
Name = subdept.Element("Name")
};
}
...これに:
private static Subdepartment GetSubdepartmentForXMLElement(XElement subdept)
{
var xElement = subdept.Element("Id");
if (xElement != null)
{
var element = subdept.Element("AccountId");
if (element != null)
{
var el = subdept.Element("Name");
if (el != null)
{
return new Subdepartment
{
Id = Convert.ToInt32(xElement.Value),
AccountId = Convert.ToDouble(element.Value),
Name = el.Value
};
}
}
}
}
...追加する必要がありました:
return null;
...最後から 2 番目の中括弧の後に、コンパイルできるようにします。
私は R# が大好きですが、上記のコードはお尻の袋よりも 9 倍醜く見えます。これはより良いシャープ化ではないでしょうか:
private static Subdepartment GetSubdepartmentForXMLElement(XElement subdept)
{
var IdElement = subdept.Element("Id");
var AccountIdElement = subdept.Element("AccountId");
var NameElement = subdept.Element("Name");
if ((IdElement != null) && (AccountIdElement != null) && (NameElement != null))
{
return new Subdepartment
{
Id = Convert.ToInt32(IdElement.Value),
AccountId = Convert.ToDouble(AccountIdElement.Value),
Name = NameElement.Value
};
}
return null;
}
?
アップデート
私は実際、何らかの理由でこの「スタイル」を好みます。
var IdElement = itemGroup.Element("Id");
var item_group_idElement = itemGroup.Element("item_group_id");
var nameElement = itemGroup.Element("name");
if ((null == IdElement) || (null == item_group_idElement) || (null == nameElement)) return null;
return new ItemGroup
{
Id = Convert.ToInt32(itemGroup.Element("Id").Value),
item_group_id = itemGroup.Element("item_group_id").Value,
name = itemGroup.Element("name").Value
};