3

Objective-Cに深く関わった後、C#でのコーディングに戻ります。そして、C#では、パフォーマンス、メモリオーバーヘッド、コードの可読性とメンテナンスの観点から、ネストされたメソッド呼び出しを使用してコードを記述することに特別な利点や欠点はありますか?または、速度やメモリの利点(メモリの利点の部分はObjC /非マネージコードの話である可能性があります)よりも、読みやすく、コードを追跡しやすい方がよいでしょうか?

例(x、y、z、w、t、e、gはすべてintです):

// non-nested
// someMethod returns an int

int b = someMethod(w,t,e);
int a = ((x + y) * b);
int c = a + (b * g);
return a + b + c;


// nested
// someMethod returns an int
return (((x + y) * someMethod(w,t,e)))
+ (someMethod(w,t,e)) + (((x + y) * someMethod(w,t,e))
+ (someMethod(w,t,e) * g));

ネストされていないコードに従う方が簡単ですが、ネストされたコードでは、3つの変数をインスタンス化する必要はありません。また、4行のコードから1行のコードになります(読みやすくするために、1行は3行に分割されています)。どちらの方法が優れているか、またはC#プログラミングコミュニティ内でより受け入れられているかはわかりません。任意の洞察をいただければ幸いです。ありがとう!

4

3 に答える 3

3

些細なことをしない場合someMethod(w,t,e)、それを3回呼び出すと、1回呼び出して結果を保存するよりも遅くなります。

2つの式は、関数が「純粋」関数である場合にのみ同等であることに注意してください。つまり、someMethod(w,t,e)副作用がなく、同じ引数のセットに対して同じ値を返します。

初期の設計とコーディングでは、最高の読みやすさを追求する必要があります。プロファイリングの前にメソッド呼び出しのオーバーヘッドを考慮することは、時期尚早の最適化です。

于 2013-02-26T04:25:47.743 に答える
2

いくつかの理由から、すべてを異なるメソッドに分離することをお勧めします。

  1. あなたが言ったように、それは読みやすいので、あなたのコードがこれまでに渡された場合、またはしばらくしてからそれを再訪した場合、あなたは何が起こっているのかをすぐに理解することができます。
  2. どこでも再利用可能なコードを作成できます。これにより、大規模なプロジェクトでのコーディング時間を短縮できます
  3. 問題をより迅速に切り分けることができるため、デバッグが容易になります。

もちろん、より多くのオーバーヘッドがありますが、速度とメモリに関しては、私はこれまでテストしたことがありませんが、少し失う可能性があると確信しています。今日人々が実行しているコンピューターの種類を考えると、私はそれが目立つとは思わないでしょう。

私はコードをできるだけ早く捨てる小さなプロジェクトをたくさん作りましたが、前進し始めたり、プログラムが少し複雑になり始めたら、いつも戻ってすべてをメソッドに再編成します。

それはすべてをシンプルでクリーン、そして読みやすく保ちます。

于 2013-02-26T04:34:20.993 に答える
0

ほとんどの場合、読みやすさは優れています。CleanCodingという本をチェックしてください。あなたの例では、コードがビルドされると、追加のメモリは0個使用されます。

于 2013-02-26T04:25:47.900 に答える