6

パフォーマンスとベスト プラクティスの観点から、次のどのアプローチが推奨されるかを知りたいだけです。性能差はありますか?

if (objA.objB.objC.objD.objE != null)
{
   objX.var1 = objA.objB.objC.objD.objE.prop1;
   objX.var2 = objA.objB.objC.objD.objE.prop2;
   objX.var3 = objA.objB.objC.objD.objE.prop3 + objA.objB.objC.objD.objE.prop4;

   ......
   ......
}

or

var objonlyE = objA.objB.objC.objD.objE
if (objonlyE != null)
{
   objX.var1 = objonlyE.prop1;
   objX.var2 =  objonlyE.prop2;
   objX.var3 = objonlyE.prop3 + objonlyE.prop4;
   ......
   ......
}
4

5 に答える 5

7

'.' の後ろに何が隠れているかわからないため、2 番目の方が優れています。これは、データベース呼び出しまたはその他の高価な操作である可能性があります。

于 2012-12-28T12:12:00.460 に答える
4

プロパティへのアクセスが高速になるため、パフォーマンスは考慮されません (そうでなくても、同じプロパティに同じ順序でアクセスしてもほとんど違いはありません)。

保守性と可読性が問題であり、その点で、2 番目のオプションの方がはるかに優れています。

デメテルの法則について読む:

デメテルの法則 (LoD) または最小知識の原則は、ソフトウェア、特にオブジェクト指向プログラムを開発するための設計ガイドラインです。一般的な形式では、LoD は疎結合の特定のケースです。

于 2012-12-28T12:11:17.320 に答える
0

2番目のアプローチでは、プログラマーのミスが少なくなります。たとえば、最初のアプローチでは、次のミスを犯す可能性があります。

objX.var1 = objA.objB.objC.objD.objE.prop1;
objX.var2 = objA.objB.**objU**.objD.objE.prop2;
于 2012-12-28T12:16:12.393 に答える
0

2番目は使いやすいです...コードを何度も何度も繰り返さないため、より良いです...

于 2012-12-28T12:10:45.890 に答える
0

私は2番目のアプローチを好みます。それははるかに読みやすいです。パフォーマンスに関しては、通常の変数/プロパティの場合は目立たないはずです。プロパティの下にパフォーマンスの重い操作が隠されている場合は、2 番目のバージョンを使用する必要があります。

于 2012-12-28T12:10:57.127 に答える