なぜ多くのプログラミング言語が、関数が渡されたオブジェクトをパラメータとして変更できるようにするのですか? 。例:関数をクリアにすると、そのパラメータを変更できます
SomeObject A(15), B
B = DoSomething(A)
print(A + " " + B + "\n)
このコードを読むと、出力が "15 75"のようになると思います。つまり、Aはそれを構築したものです。しかし、ほとんどの言語はDoSomethingがAの値を変更することを可能にします.C++ではDoSomethingの宣言を見れば、そのパラメータが非const参照として定義されているかどうかを調べることができます。しかし、Pythonのような多くの言語では、関数のコードを読まずに、決して変更しないことを確認する方法は実際にありません。
私はこれを数回機会に噛まれましたこの動作を使用する他の人のコードでは、通常、行ごとにコード全体を調べて、パラメータを変更しようとする行を探します。
一般に、明示的な構文は必要ありません「このオブジェクトは変更可能です」と言う呼び出しによって、たとえば「B = DoSomething(inout A)」と言うことができますか?
「関数に渡されたパラメータを決して変更しない」以外に、問題の発生を防ぐのに役立つコーディング標準はありますか?
言語を選択。 「非常に多くのプログラミング言語」は多くの言語であり、すべての言語の設計上の決定が異なります。 –
Python、C、C++、Javaはすべて私の例に示されているように正確に行うことができるものであり、私はもっと知っていると思っています。 –