Je suppose que je vais essayer d'expliquer ma question par 2 extraits de code:Implémentation des méthodes de classe: devrait-elle changer la variable membre d'une classe ou intégrer des arguments?
// snippet 1
class FooBar
{
private int value;
public int DetermineSomeResult()
{
PerformSomeCalculationOnValue();
PerformSomeMoreStuffOnValue();
return value;
}
public int GetCachedValue()
{
return value;
}
}
La première mise en œuvre a essentiellement des méthodes qui fonctionne sur l'organe entier privé.
est ici la deuxième mise en œuvre
// snippet 2
class FooBar2
{
private int value;
public int DetermineSomeResult()
{
int tempvalue =GetCachedValue();
tempvalue = PerformSomeCalculationOnValue(tempvalue);
tempvalue = PeformMoreStuffOnValue(tempvalue);
SetValue(tempvalue);
return tempvalue;
}
public int GetCachedValue()
{
return value;
}
}
Pour la deuxième mise en œuvre, aucune modification est apportée à l'état interne jusqu'à ce que tous les calculs ont terminé. Design-sage lequel est le meilleur?
J'ai tendance à préférer le second car il est plus clair, montre les dépendances. Cependant, puisque la classe elle-même stocke déjà un membre de classe destiné à la valeur calculée, il semble stupide de ne pas l'utiliser.
Des commentaires à ce sujet?
Votre préoccupation concerne-t-elle la sécurité des filetages? –
Pas, pour l'instant. Mes projets ne concernent pas les discussions pour le moment. – Extrakun