私の質問はPythonに向けられていますが、JavaScriptやその他のスクリプト言語に関するものでもあります。動的型指定言語で関数の引数を記述する方法は?
私は通常、静的型付けされた言語(Java、C++、ActionScriptなど)で開発しています。
私は時々Pythonを使うのが好きで、JavaScriptを使う必要があることもあります。これらは動的型付き言語です。それには何も問題はありませんが、私は通常、関数やメソッドにどのパラメータが必要であるかを理解するために頭痛があります。たとえそれが私自身のコードであってもdocstringを使っていても起こります!多分、目は機能の定義以外の場所を見なければならないからです。
もちろん答えはドキュメントに記載されています。しかし、時にはそれはまったく明らかではないか、またはダックの入力のために文書化自体が難しいかもしれない( "最初のパラメータは、quack()メソッドとfeathers(arg)メソッドを持たなければならない関数です。 argは文字列 "です)。私が非常に好きなのは、たとえActionScriptのようなオプションであっても、言語そのものの中で一種の議論記述です。
関数/メソッドの引数を曖昧さなく記述するためのベストプラクティスは何ですか?
特別なデコレータ(Pythonを使用している場合)を作成する目的は、使用時にデータのタイプをチェックすることです(しかし、実行時ではなく書き込み時に使用されるため、 )?
あなたはそれが問題ではないと思いますか?現在のdocstring以上のことは、開発者を混乱させるか、私の心はスタティック型すぎるのか?
は、このようなデコレータを忘れる:それとも、あなたは「
Duck
様」のインターフェイスを文書化することが重要だ場合、私はそれが参考文書として役立つ基本クラスを宣言することが分かってきました。ドキュメンテーションには役に立たず、非常に複雑で(適切に実行されていれば)、オーバーヘッドが大きく、ダックタイピングを危険にさらし、タイプチェックの通常のメリット(プログラムを実行しないでチェックすること、前述のドキュメント、最適化など) )。あなたは* "静的すぎるタイプの指向" *です。 – delnan多分それは確かです:)しかし、私は時には、私が何を与えなければならないかを知るために、いくつかのPythonライブラリのドキュメントを理解するのに時間を費やすという印象を持っています。私は静的な型付けを使って関数/メソッドのシグネチャを調べるだけです。私は動的な型定義が静的型付き言語のいくつかの制限を打ち破ることができることを知っていますが、ライブラリの使用の不明確な理解を意味するならば、私は時間を失うと感じます。 –