Javascriptは今後数年間でWebのユビキタスプログラミング言語であるように思われ、新しいフレームワークが5分ごとにポップアップし、イベント駆動型プログラミングがサーバー側とクライアント側の両方をリードしています。
Javascript開発者として、従来のデザインパターンを他の言語/環境よりも重要と考えていますか?
Javascript開発者が定期的に使用している上位3つのデザインパターンに名前を付け、それらがJavascript開発にどのように役立ったかの例を示してください。
Javascriptは今後数年間でWebのユビキタスプログラミング言語であるように思われ、新しいフレームワークが5分ごとにポップアップし、イベント駆動型プログラミングがサーバー側とクライアント側の両方をリードしています。
Javascript開発者として、従来のデザインパターンを他の言語/環境よりも重要と考えていますか?
Javascript開発者が定期的に使用している上位3つのデザインパターンに名前を付け、それらがJavascript開発にどのように役立ったかの例を示してください。
回答:
Javascript開発者として、従来のデザインパターンを他の言語/環境よりも重要と考えていますか?
古典的なデザインパターンはJavaScriptには適用されません。
適用されるのは、モジュール式の機能的なコードを書くことです。
コンストラクターとファーストクラス関数を組み合わせて使用する必要があります。
JavaScript開発者として、私はJavaScriptをJavaではなくLISPとして扱うことに個人的に取り組んでいます。したがって、従来のOOPコードをエミュレートするのではなく、モナドと高レベルの機能スタイルコードをエミュレートしてください。
Javascript開発者が定期的に使用している上位3つのデザインパターンに名前を付け、それらがJavascript開発にどのように役立ったかの例を示してください。
繰り返しますが、設計パターンはそれほどそれほど適用されませんが、以下に3つの重要な構成要素があります。
new
従来のデザインパターンを使用して同じ種類のコードを実行する場合と比較して、これらの種類の手法の例を示すことができるコンテキストを残してください。
古典的なデザインパターンのいくつかと、それらをjsで実装する方法、およびjs自体により適した代替パターンを見てみましょう。
オブザーバーパターン:
でnode.js
、この単純ですevents.EventEmitter
。ではjQuery
これで$.fn.bind
&& $.fn.trigger
。でbackbone
これですBackbone.Events.trigger
とBackbone.Events.bind
。これは、日々のコードで使用される非常に一般的なパターンです。
「ここでオブザーバーパターンを使用している!」いいえ、これは単にメッセージを渡す低レベルの方法、または変更をカスケードする方法です。
たとえば、バックボーンでは、すべてのMVCビューがモデルonchange
イベントにバインドされるため、モデルを変更すると、変更がビューに自動的にカスケードされます。はい、これは強力なパターンですが、その使用はイベント駆動プログラミングで非常に一般的であり、どこでも使用されていることに気づいていませんでした。
でWebSocket
prototcol我々は.on
、我々はにバインドするために使用しているon("message", ...
イベント。繰り返しますが、これは非常に一般的ですが、従来のOOPベースではなく、ストリームのオブザーバーですwhile (byte b = Stream.ReadNextByte())
。
これらはすべて、Observerパターンの強力な使用法です。しかし、これはあなたが使うパターンではありません。これは言語の単純な部分です。これは単なるコードです。
メメントパターン:
これは単なるJSONです。オブジェクトの状態をシリアル化して、アクションを取り消すことができます。
function SomeObject() {
var internalState;
this.toJSON = function() {
return internalState;
}
this.set = function(data) {
internalState = data;
}
this.restore = function(json) {
internalState = JSON.parse(json);
}
}
var o = new SomeObject();
o.set("foo"); // foo
var memento = JSON.stringify(o);
o.set("bar"); // bar
o.restore(memento);
JavaScriptでは、メモリメント用のAPIをネイティブにサポートしています。toJSON
任意のオブジェクトで呼び出されるメソッドを定義するだけです。お問い合わせの際JSON.stringify
には、内部的に呼び出します。.toJSON
あなたはJSONにシリアライズしたい、実際のデータを得るためにあなたのオブジェクトに。
これにより、コードのスナップショットを簡単に作成できます。
繰り返しますが、これは思い出のパターンではありません。これは、JSONであるシリアル化ツールを使用しているだけです。
状態パターン/戦略パターン:
状態パターンは必要ありません。ファーストクラスの関数と動的型があります。その場で関数を挿入するか、プロパティを変更するだけです。
この回答を主観的な意見としてください。
Javascript開発者として、あなたは従来のデザインパターンを他の言語/環境を使用した場合よりも重要であると考えていますか?
Gang of Fourのような従来のデザインパターンを意味する場合、ほとんどの技術は「実装ではなくインターフェイスへのプログラム」や「クラス継承よりもオブジェクト構成を優先する」などの言語/プラットフォームに依存せず、JavaScript開発者にとっても同様に重要です。
創造的、構造的、行動的などのより具体的なパターンは、言語の機能がその使用に大きな影響を与える可能性があるため、他の言語と同じ方法または頻繁に使用する必要がある場合があります。そのため、一部の言語(JavaScriptを含む)には、提供する機能または構文糖に基づいた独自のデザインパターンがあります。
一般に、従来のデザインパターンは他の言語と同様に重要ですが、JavaScript固有のパターンは従来のパターンよりも重要です。
Javascript開発者が定期的に使用する上位3つのデザインパターンに名前を付け、それらがJavascript開発でどのように役立ったかの例を示します
必須のJavaScriptデザインパターンの中で、主にこれらを使用します。
1.コンストラクターパターン(プロトタイプ付き)
特にnode.jsを作成するときのサーバー側では、ネイティブのカプセル化はありませんが、モジュールの作成に適しているためです。また、GitHubでリポジトリを閲覧する場合、他の多くの開発者に人気があるため、このパターンに精通していると、他のコードをよりよく理解するのに役立ちます。
2.モジュールパターンの表示
カプセル化によるモジュール性を提供します。
3. DRYパターン
これはかなりシナリオ固有ですが、すべての開発者は可能な限り使用する必要があります。
デザインパターンは、CSのデザインクラスで教えられます。これらは必須ではありませんが、類似の状況を見つけて解決済みの解決策を見つけることができれば、本当に役立ちます。
また、プログラマーがより簡単に通信できるようになります。パターンに関しても同僚と話すことができます。ここで私がオブザーバーを持っていると言ったら、何が起こっているのかはかなりよく理解されています。
人々は自然に自分でデザインパターンに適合するソリューションを考え出しますが、デザインパターンは役立つ用語や標準的なアイデアを定義するのに役立ちます。
パターンについて特筆すべきことは何もありません。最も良いことは、それらが繰り返し有用な方法で標準化され定義されたアイデアであることです。
JavaScript開発者として、従来のデザインパターンを重要と考えていますか、それとも重要ではないと考えていますか
彼らは不可欠です。
これは、再利用可能なソリューションの概念が言語を超越できるためです。-構文の変更-実装の変更-パターンの概念はまだ存在します。
あらゆる言語の開発者は、構文ではなくパターンを学習することで、高度なJSを学習できます。これを知らない人は見逃しています。
Javascript開発者が定期的に使用している上位3つのデザインパターンに名前を付けてください
頻繁に使用されるパターンの中には、「反対する」人もいます。ただし、高度なJSでは非常に一般的で強力なため、知っておくと便利です。
1-名前空間-コードをオブジェクトにラップします。
var x =(function(){})();
2- ObjectConfiguration、工場のようなパターン。-多数の変数ではなく、関数にオブジェクトを渡します。
var product = factory({});
3-コールバック機能。-タスクが完了したときに呼び出される関数をパラメーターとして渡します。
function longTask(function(){//完了したら電話してください});
私が言ったように、これらはパターンではないと主張する人もいるかもしれませんが、それらは非常に一般的で非常に強力であり、実際の一般的な問題に対する非常に有用な再利用可能なソルトンであるため、言及する必要があります。これがデザインパターンの定義です。
素晴らしい質問です。
お役に立てば幸いです。