階層内の null のチェックを避けるために拡張メソッドを使用することに疑問があります。例:
// GetItems(), GetFirstOrDefault(), GetProduct(), GetIDProduct() are extension methods like:
public static SomeType GetSomeProperty( this XYZ obj ) {
if ( object.ReferenceEquals( obj, null ) ) { return default( SomeType ); }
return obj.SomeProperty;
}
// the code with extension methods
Guid? idProduct = this.Invoice.GetItems().GetFirstOrDefault().GetProduct().GetIDProduct();
// instead of
Guid? idProduct = null;
Invoice invoice = this.Invoce;
if ( null != invoice ) {
InvoiceItems items = invoice.Items;
if ( null != items && items.Count > 0 ) {
InvoiceItem item = items[0];
if ( null != item ) {
idProduct = item.IDProduct();
}
}
}
利用可能な Null オブジェクト パターンがあることは知っていますが、このタイプの拡張メソッドを使用したソリューションの方が優れているように見えます。
このソリューションは良いと思いますか、それとも悪いと思いますか (悪い/良いデザイン、明快さ、その他何でも)?
「良い」または「悪い」に投票してください。また、その理由を教えてください。投稿にはコミュニティとしてフラグが付けられます。