0

ほとんどの場合、私が開発しているライブラリは、1 つまたは複数のプロジェクトによって内部的に使用されます。それを念頭に置いて、私が書いた関数のすべてのパラメータに対して型チェックを実行するロジックを追加する必要がありますか? 選択的な型チェックを行うと、API に矛盾を感じさせ、すべてのパラメーターに対して行うとコードが肥大化し、何も行わないとエラー メッセージが表示される可能性があると思います。理由または理由についてのガイダンスをいただければ幸いです。

4

3 に答える 3

2

まず、内部使用のみであっても、API を文書化することが重要です。数年後にコードが必要になった場合に便利です。

このドキュメントでは、パラメーターの型をユーザーに伝えることができます。ドキュメンテーションによく使用されるツールはdoxygenです。

/**
* \brief Converts a string into a DummyObject
* \param str should be a valid string
*/
function str_to_dummy(str) {

}

/**
* \brief Converts an object into a DummyObject
* \param jsobj should be an object which contains at least
*        the following attibutes: 'height','length', 'size'
* \example json_to_dummy({'height': 12,'length': 15,'size': 11});
*/
function json_to_dummy(jsobj) {

}

次のいずれかの方法でエラー メッセージが表示されることに注意してください。

パラメータ 'o' は、属性 'height' を持つオブジェクトでなければなりません

また

ReferenceError: o.height は定義されていません

より詳細なエラーが発生するのは良いことですが、API を正しく文書化する場合は、多くの場合必要ありません。

于 2012-12-04T08:22:23.267 に答える
1

すべては、ライブラリ内のエラーをどれだけうまく処理したいかによって決まると思います。誰かがあなたに無効な型の引数を渡すという事実を受け入れることができますか? それでよろしければ、ライブラリのサイズを節約するために型チェックをスキップします。

結局のところ、誰かがそれを改ざんしたい場合、それはクライアント側の JavaScript だけです。それについてあなたができることは何もありません。

于 2012-12-04T08:26:44.037 に答える
-1

(ほぼ) 常に関数パラメーターをチェックまたはキャストする必要があると思います。
私はちょうどsmthました。昨日のように:

foo("1");  

function foo(myVar)  
{  
  return myVar+2;  
}    

したがって、注意する必要があります。正当な理由だと思います。

于 2012-12-04T08:24:56.747 に答える