2010-01-21 9 views
1

Si j'ai la classe "A" dont je veux déclarer une instance, que j'utilise fréquemment dans la classe "B", quel est le facteur décisif pour savoir si je devrais le déclarer en dehors de la classe " B "ou dans chaque méthode je l'utilise dans la classe" B "?variable scope - comment décider

public Class A 
{ 
} 

A declareClassA = new A(); 
public Class B 
{ 
} 

ou

public Class B 
{ 
    public void MethodA() 
    { 
     A declareClassA = new A(); 
     ... 
    } 
    public void MethodB() 
    { 
     A declareClassA = new A(); 
     ... 
    } 

} 

Répondre

0

Voulez-vous utiliser une nouvelle instance pour chaque méthode? Si c'est le cas, déclarez et instanciez à l'intérieur de la méthode.

Si ce n'est pas le cas, déclarez-le dans la classe.

public Class B 
{ 
    A myA = new A(); 
} 
2

Tout d'abord, vous ne pouvez pas (AFAIK) déclarer une variable en dehors d'une classe.

Pour votre premier exemple, je pense que vous voulez dire:

public Class B 
{ 
    A declareClassA = new A(); 
    // methods here.. 
} 

Quant à votre question - avez-vous besoin d'utiliser la même instance dans les deux METHODA et MethodB, ou non?

Si c'est le cas, utilisez le code ci-dessus. Sinon, utilisez une déclaration séparée dans chaque méthode.

+0

Peut-être que ces classes sont déclarées dans une autre classe ... –

0

Dans votre première méthode, A semble être soit un modèle singleton soit une classe statique. Cela dépend vraiment des données dans A, et si cela devrait être réutilisé et combien d'instances devraient exister.

0

Cela dépend si vous avez besoin de stockage persistant de cet objet. Si vous avez besoin de référencer la même instance, déclarez-la comme une variable de niveau classe sinon déclarez-la dans les méthodes afin de réduire le couplage entre vos méthodes.

En outre, si ces fonctions sont toujours en utilisant la classe A pensent de savoir si elles doivent appartenir à la classe A au lieu de la classe B

1

Les meilleures pratiques seraient à portée variable à son plus bas niveau nécessaire. Si vous avez besoin de partager une variable entre les méthodes, sa portée devrait être en dehors de cela. Si les méthodes fonctionnent indépendamment et peuvent survivre avec une portée à ce niveau, vous devez alors déclarer/instancier votre nouvelle variable.

Toujours garder votre portée aussi minimale que possible sans réduire la fonctionnalité.