Jason Robertsがpluralsite courseをレビューした後、私たちのコードベースの一部をより機能的なスタイルに変換しようとしています。より機能的なアプローチはnull参照例外が少ないことを意味しますか?
例えば、我々が持っている場合:
var request = new RetrieveAttributeRequest
{
EntityLogicalName = EntityTypeDictionary.First(kvp => kvp.Key.Name == entityTypeName).Value,
LogicalName = attributeName
};
var response = (RetrieveAttributeResponse) _organizationService.Execute(request);
を私は単に、要求の上に私のカーソルを置いて、ctrl+alt+N resharper shortcutを使用すると、結果は次のようになりますことができます。
var response = (RetrieveAttributeResponse) _organizationService.Execute(new RetrieveAttributeRequest
{
EntityLogicalName = EntityTypeDictionary.First(kvp => kvp.Key.Name == entityTypeName).Value,
LogicalName = attributeName
});
もう一つの例:
まずは:
var request = new RetrieveAttributeRequest
{
EntityLogicalName = EntityTypeDictionary.First(kvp => kvp.Key.Name == entityTypeName).Value,
LogicalName = attributeName
};
var response = (RetrieveAttributeResponse) _organizationService.Execute(request);
var attribute = response.AttributeMetadata;
var type = attribute.AttributeType;
var logicalName = attribute.LogicalName;
、すべてのインライン交換後:彼らのインライン同等物は、コードの安全性を高め、null参照ポインタ例外を減少させると
var logicalName = ((RetrieveAttributeResponse) _organizationService.Execute(new RetrieveAttributeRequest
{
EntityLogicalName = EntityTypeDictionary.First(kvp => kvp.Key.Name == entityTypeName).Value,
LogicalName = attributeName
})).AttributeMetadata.LogicalName;
を質問
変数を交換していますか?
:あなたがnullの取扱いをやってみたかった場合、あなたの最後の例で
は、あなたがこのような何かをしますか?最後のスニペットを見てください。 'Execute()'が 'null'を返すと、' AttributeMetadata'にアクセスするとNREがトリガーされます。 –
どちらも、参照例外をヌルにする傾向がありません。まったく同じ参照はすべて参照解除されています。ヌルの場合はNREを取得します。 –
最も欠陥のあるコードは、resharperが変更されていないものです: 'EntityTypeDictionary'に要素が含まれていない場合、' EntityTypeDictionary.First(kvp => kvp.Key.Name == entityTypeName).Value' –