Supposons qu'il y ait une fonction avec une valeur par défaut:Comment traiter les valeurs par défaut dans les appels de fonction (profondément) imbriqués?
int foo(int x=42);
Si cela est appelé par d'autres comme celui-ci:
int bar(int x=42) { return foo(x); }
int moo(int x=42) { return bar(x); }
Ceci est bien sûr juste un exemple artificiel. Cependant, j'ai parfois une situation assez similaire. Le paramètre est juste passé du plus haut niveau (moo
) au plus bas et seulement là il est réellement utilisé. La mauvaise chose à ce sujet est que quand je change foo
pour avoir un défaut différent de 42
je devrais rechercher tous les appelants et changer la valeur par défaut en conséquence.
Y a-t-il un motif/idiome pour éviter cette situation?
La seule solution simple qui me vient à l'esprit est
int bar() { return foo(); }
int bar(int x) { return foo(x); }
Cependant, comme je suis un peu paresseux et dans le code réel cela conduirait à un certain duplication de code, je voudrais éviter cela.
Je dirais que vous ne devriez pas vraiment utiliser la valeur par défaut du paramètre pour les valeurs par défaut arbitraires. Pour ceux que j'utiliserais les variables const namespaced. Les paramètres par défaut sont bons pour des choses comme les valeurs d'initialisation * sane * (zero/nullptr/false). – Galik