2017-10-03 15 views
-1

Hypothétiquement la situation suivante:objets dans la même classe, moins la situation des ressources

On crée une instance d'un objet dans une méthode, cette instance est utilisé par une autre méthode de cette même classe.

Qui prend le moins de ressources de la machine?

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; 
    } 
} 

ou

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

Si votre application est si lente que vous pensez que _this_ est l'optimisation que vous devriez prendre. Quelque chose est sérieusement faux ... – maccettura

+0

merci beaucoup d'avoir mis une nouvelle situation hypothétique à celle que j'ai déjà créée ... dans la mienne il n'y a pas de cas comme 'être lent' ou quoi que ce soit, je veux juste savoir ce que le la meilleure pratique est. – MwBakker

+1

La meilleure pratique ici ne serait pas déterminée par la vitesse, je doute que vous mesureriez une différence significative entre chaque exemple que vous avez montré. Au lieu de cela, pensez si vous voulez que l'objet 'User' persiste en dehors de la durée de vie de la méthode' iDoSomethingWithUser' car c'est la différence majeure ici. – Equalsk

Répondre

1

En première solution vous déclarer user comme variable globale et il peut être utilisé dans toute la classe alors que dans la deuxième solution que vous déclarez seulement pour vide et après la fin vide, cette variable ne sera être disposé. De toute façon il n'y a pas beaucoup d'avantages à faire les deux façons puisque votre application n'obtiendra pas beaucoup plus de ressources si vous utilisez la première solution mais avec la deuxième solution votre code sera plus organisé et vous pourrez utiliser les mêmes noms var en plus vides:

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 
    } 
} 

Et si vous déclarez des variables vides à l'intérieur, il vous permettra d'utiliser le même nom

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) 
    } 
} 

avez à l'esprit ce que vous faites lors de la création User() classe. Si vous faites des choses complexes qui prennent du temps et que vous utilisez souvent cette classe non seulement dans un vide, mieux vaut le déclarer et l'initialiser une fois que de le faire à chaque fois.

+1

La première partie de votre réponse est juste, mais la deuxième partie semble avoir déraillé ... – Equalsk

+0

Je vais l'éditer pour le rendre plus clair –

+0

S'il s'agit de l'organisation de code alors il est bien sûr clair quelle est la meilleure pratique , Je me demandais lequel prendrait moins de ressources. Comme il n'y a aucun cas de différence, j'ai ma réponse. – MwBakker