2017-07-28 1 views
0

Si jeEst-il acceptable de dupliquer le nom de l'argument de la fonction lors de l'implémentation et de l'appel?

#include <iostream> 
int fun(int,int); 

int main(void) 
{ 
    int foo=3; 
    int bar=5; 
    std::cout << fun(foo,bar); 
} 

int fun(int foo, int bar){ return foo+bar; } 

Y aura-t (peut-être) confusion (soit humaine ou complier!) En ce qui concerne les noms contradictoires foo et bar, une dans la définition de la fonction, un dans le principal corps de programme? Jusqu'à présent, je trouve le résultat correct, mais il est préférable de connaître les meilleures pratiques. En effet, je manque souvent d'imagination et nomme les deux occurrences (comme dans l'exemple) pour être les mêmes.

(Je me suis demandé cela pendant des années, c'est tellement basique que je suis sûr que quelqu'un doit avoir demandé auparavant dans la longue histoire de SO, mais je ne peux pas trouver maintenant.

+3

Lorsque vous posez cette question, vous avez probablement besoin de lire sur la portée. Il n'y a rien de mal à avoir des variables avec le même nom dans différentes portées et selon le style de codage (complètement basé sur l'opinion), il peut être utilisé par défaut pour utiliser les mêmes paramètres que ceux que vous passez à une fonction. fonction. – user463035818

+0

Alors qu'en est-il des langages tels que Python où il n'y a pas de concept de portée? – Aminopterin

+3

alors c'est une question différente, parce que celle-ci concerne C++: P. Je suis débutant complet en python, mais je ne peux pas croire qu'il n'a pas de concept de portée – user463035818

Répondre

1

Pour compiler, chaque variable est associée à une étendue définie par la norme de langage, il ne doit pas exister de cas de mauvaise compréhension. Si dans un cas où les compilateurs ne peuvent pas décider de la portée d'une variable, alors une erreur de compilation ambiguë est levée.

Exemple: Même nom mais portée différente.

int x = 10; 

void func() { 
    // the definition of local x below hides global x in current scope 
    int x = x; // local x is assigned value of global x 
    x = 5; // local x is assigned 5, this does not affect global x 
    printf("local x = %d\n", x); 
} 

int main() { 
    func(); 

    printf("global x = %d\n", x); 

    return 0; 
} 

Pour voir comment les compilateurs peuvent traiter les variables avec le même nom, mais une portée différente, lire plus au How does a C compiler differentiate a local and a global variable of the same name?

à l'homme, elle est appelée convention de nommage. Vous êtes libre d'utiliser des noms valides pour nommer vos variables, mais il est recommandé de suivre certaines règles cohérentes - cela rendra votre code beaucoup plus lisible et maintenable.