2012-05-04 7 views
0

私は正しいプログラミングアプローチについて考えています:正しいアプローチ:常にすべての変数を関数引数として渡しますか?

私は私のJavaScriptコードを記述したよう私は機能として、それらを通過しなかったものの、私は、私の関数とオブジェクト内から多くの動的に作成されたグローバルオブジェクトや変数を参照してください。引数。このように、関数とオブジェクトはアプリケーションの別のグローバルオブジェクトに依存するため、関数の汎用性と独立性が失われています。私はこの事実を認識していますが、私のオブジェクト/関数は多くの変数を必要とすることがあります。

関数の引数としてすべての変数とオブジェクトを渡すよう常に努力すべきかどうかアドバイスしてもらえますか?このようにすれば、関数が必要とする変数が明確になります。正しい引数を指定すると、関数は常に機能します。

また、厳密にする必要はありませんが、関数/オブジェクト仕事、彼らはグローバルオブジェクトを参照しているにもかかわらず、私はもはやこの質問を気にする必要はありません?

正しいプログラミング方法を知る必要があるので、間違ったことに慣れていません。

+1

皆さんは、できるだけグローバル変数を小さくすることに努めなければならないと誰もが同意すると思います。 は - それは 、ほとんどの場合、優れたパフォーマンスについてです - - あなたのクラスの「インターフェース」 より明確になります - コードは、よりポータブル になるというように...インターネットは、この問題 – xCander

+0

@Vicを議論記事でいっぱいです。合理的な答え+1。ありがとうございました。はい、それはあなたが言うことを意味します。すべての開発者が締結すれば、このトピックについてのさらなる意見を聞きたいと思います。 –

答えて

1

はい、可能な限りグローバル変数を使用したいと思います。結果として、多くのパラメータを各関数に渡していることがわかった場合は、パラメータを見て共通点を調べる必要があります。多くの場合、オブジェクトを追加すると役立ちます。パラメータをオブジェクトのインスタンス変数に結合し、その1つのオブジェクトを渡すことができます。次に、インスタンス変数を抽出するのではなく、操作をそのオブジェクトに委譲します。

たとえば、次のコードがあるとします。

drawLine(fromX, fromY, toX, toY, thickness, color, canvas) 

あなたは、x、yの値と厚さ、色、キャンバスを保持するためのグラフィックスコンテキストを保持するためのポイントを作成することができます。結果は次のようになります。

drawLine(from, to, context) 

一般的に使用される操作を含むパラメータの数を減らし、再利用可能なオブジェクトを作成しました。

+1

drawLineをPoint.prototype上のメソッドにすることは意味をなさないので、呼び出しは 'from.drawLine(to、context)'になります... –

+1

私はdrawLineをコンテキストオブジェクトに移動する傾向があります。 drawLine(from、from) ' –

+0

@DavidBuck:+1とあなたの答えに感謝します。それは私には意味があり、私が思っていたことを私に保証しましたが、必ずしもそうではありませんでした。私は、別の答えを待つ必要はなく、私はこれを* Accepted Answer *とマークしていると思います。 –

関連する問題