Pourquoi est-ce que tant de langages de programmation permettent à une fonction de modifier un objet qui lui est passé en paramètre, sans avoir une sorte de syntaxe pour le rendre clair à l'appelant? . Par exemple, considérer:Faire en sorte qu'une fonction puisse modifier ses paramètres
SomeObject A(15), B
B = DoSomething(A)
print(A + " " + B + "\n)
lecture que le code que vous attendez que la sortie soit quelque chose comme « 15 75 », à savoir A est ce que vous avez construit à. Cependant la plupart des langages permettent à DoSomething de changer la valeur de A. En C++ vous pouvez dire si c'est possible ou non en regardant la déclaration de DoSomething, par exemple en regardant est le paramètre est défini comme une référence non constante. Cependant dans beaucoup de langues, telles que Python il n'y a vraiment aucun moyen de dire sans lire le code pour la fonction pour s'assurer qu'il ne change jamais A.
J'ai été mordu par ceci à quelques occasions, particulièrement en essayant de travailler avec le code de quelqu'un d'autre qui utilise ce comportement et conduit généralement à parcourir la totalité du code ligne par ligne pour essayer de trouver ce qui change le paramètre ...
Pourquoi est-ce que les langages n'exigent généralement pas de syntaxe explicite? par l'appel à dire "oui cet objet peut être modifié", par exemple dire "B = DoSomething (inout A)"?
Existe-t-il des normes de codage qui permettent d'éviter les problèmes, à l'exception du "ne jamais modifier un paramètre passé dans la fonction"?
Choix de la langue; "tant de langages de programmation" est beaucoup de langues et les décisions de conception de chaque langue sont différentes. –
Python, C, C++, Java sont tous ceux qui pourraient faire exactement comme montré dans mon exemple, et je soupçonne beaucoup plus que je ne sais pas/utiliser persoanlly. –