2017-10-03 10 views
-1

仮に、以下の状況:同じクラスのオブジェクト、前記リソース状況

一つは方法でオブジェクトのインスタンスを作成するが、この場合は、この同じクラスから別の方法で使用されています。

どのリソースがマシンから最も少なくなっていますか?

最初の解決策では
class processor 
{ 
    private User user; 

    private void iDoSomethingWithUser(string name, int age) 
    { 
     user = new User(); 
     user.name = name; 
     user.age = age 
     setUserActive(); 
    } 


    private void setUserActive() 
    { 
     user.isActive = true; 
    } 
} 

または

class processor 
{ 
    private void iDoSomethingWithUser(string name, int age) 
    { 
     User user = new User(); 
     user.name = name; 
     user.age = age 
     setUserActive(user); 
    } 


    private void setUserActive(User user) 
    { 
     user.isActive = true; 
    } 
} 
+2

あなたのアプリがそれほど遅く実行されていると思う場合は、_this_はあなたが取るべき最適です。何か_誠実に間違っています... – maccettura

+0

私は既に作成したものに新しい仮説的な状況を入れてくれてありがとう...私の中では、「遅い」なんてそんな事はありません。ベストプラクティスはです。 – MwBakker

+1

ここでのベストプラクティスはスピードで決まるわけではありませんが、あなたが示した各例の重要な違いを測定することはできません。代わりに、オブジェクト 'User'がメソッド' iDoSomethingWithUser'の存続期間外に存続するかどうかを考えてください。これは、ここでの主な違いです。 – Equalsk

答えて

1

あなたはグローバル変数としてuserを宣言し、第二の溶液中で、あなただけのボイドと、ボイド仕上がり後のためにそれを宣言しながら、クラス全体で使用することができ、その変数の意志処分する。

いずれにしても、最初のソリューションを使用するとアプリケーションのリソースがそれだけ増えることはありませんが、2番目のソリューションではコードがより整理され、より多くのリソースで同じvar名を使用できるようになりますボイド:

class processor 
{ 
    private User user; 

    public processor() 
    { 
     user = new User(); 
    } 

    private void UseSameVarName() 
    { 
     int user = 0; //it will not allow you to use `user` as another var name since you already have that name as `User` var 
    } 
} 

そして、あなたはボイド内部変数を宣言する場合、それはあなたが

class processor 
{ 
    private void CheckUser() 
    { 
     User user = new User(); 
     if(user.Name == ....) 
     //other stuffs 
    } 

    private void GetUser() 
    { 
     int user = 0; //it will allow you to use user as variable name since you do not have it declared (you had it inside other void but it is declared only for that void) 
    } 
} 

同じ名前を使用できるようになります。またUser()クラスを作成するときに、あなたがやっていることに留意しています。あなたが時間がかかる複雑なことをやっていて、そのクラスをしばしば一つの空白だけでなく使用しているのであれば、毎回それを宣言して初期化する方が良いでしょう。

+1

あなたの答えの最初の部分は正しいですが、2番目の部分はレールから外れているようです... – Equalsk

+0

私はそれをより明確にするために編集します –

+0

それはコードの整理については、もちろんベストプラクティスは何ですか?私は、どのリソースがより少なくなるのだろうと思っていました。どんな違いがあっても何の場合もないので、私は私の答えを持っています。 – MwBakker

関連する問題