4

私の質問はより Python 向けですが、JavaScript やその他のスクリプト言語に関するものかもしれません。

私は通常、静的に型付けされた言語 (Java、C++、ActionScript など) を使用して開発を行っています。

私はときどき Python を使用するのが好きで、JavaScript も時々使用する必要があります。これらは動的型付け言語です。それは何も悪いことではありませんが、通常、関数やメソッドで必要なパラメーターを理解するために多くの頭痛の種があります。いくつかのdocstringを含む自分のコードであっても発生します! おそらく、目は関数の定義以外のどこかを見なければならないからです。

もちろん、答えはドキュメントにあるはずです。しかし、まったく明確でない場合や、ダックタイピングを使用しているため、ドキュメント自体を書くのが難しい場合があります(「最初のパラメーターは、arg がは文字列です」)。私が非常に望んでいるのは、言語自体の内部に一種の引数の記述があることです (たとえそれが ActionScript のようにオプションであっても)。

関数/メソッドの引数を明確に説明するためのベスト プラクティスは何ですか?

特別なデコレータ (Python を使用している場合) を作成して、それを使用するときにデータの型をチェックすることについてはどうですか (ただし、書き込み時ではなく実行時に使用されるため、とにかくポイントは何でしょうか)?

問題にすべきではないと思いますか?現在のdocstring以上のことをすると開発者が混乱するのでしょうか、それとも私の心があまりにも静的な型付けを重視しているのでしょうか?

4

2 に答える 2

2

Javascriptについてはわかりませんがfunction annotations、バージョン3以降のPythonにはオプションがあり、次のようになります。

def haul(item: Haulable, *vargs: PackAnimal) -> Distance:

また:

def compile(source: "something compilable",
            filename: "where the compilable thing comes from",
            mode: "is this a single statement or a suite?"):

詳細については、PEPを参照してください。

それらは実行時にアクセス可能であり、に使用することもできますtype checking

于 2012-04-29T13:03:43.290 に答える
1

ダックタイピングがドキュメントを書きにくくするのはなぜですか?

関数を書くときはいつでも、引数が特定の型であるか、特定のインターフェースを確認するものであると仮定してそれを書きます…だから、それを文書化してください。

たとえば、メソッドがある場合、「 is expected to have 、、およびMethods」swim_in_pond(duck)を文書化する必要はありません— ほとんどの場合、「is an instance of 」と言うだけで十分です。または、" -like" インターフェイスをドキュメント化することが重要な場合は、ドキュメントとして機能する基本クラスを宣言すると役立つことがわかりました。duckquack()swim()dive()duckDuckDuck

class DuckBase(object):
    def quack(self):
        """ Makes the duck quack. """

    def swim(self):
        """ Swims around.
            Assumes the duck is already in water.
            Updates the duck's position. """

    def dive(self):
        """ Dives either as deep as possible (either until the duck runs out of
            air, or it hits the bottom of the pond). """
于 2012-04-29T13:06:28.110 に答える