45

JavaScriptの開発中にSOLIDプログラミングの原則(またはその一部)を使用した人はいますか?

読み始めたばかりですが、JSで使っている人が見つからないようです。私が実装/使用しやすいと思う唯一の部分は、「単一責任の原則」です。

私が探しているのは、これらの原則が使用されている記事または例です。そして、一部の部品を使用すべきではない理由について何か議論はありますか?

たとえば、「インターフェイス分離の原則」は、「多くのクライアント固有のインターフェイスが1つの汎用インターフェイスよりも優れているという概念」を示しています。

しかし、私の知る限り、JSにはインターフェースのようなものはありません(そうなるといいのですが)。

4

5 に答える 5

67

Derek Greer は、Fresh Brewed Code での SOLID JavaScript に関する彼の記事シリーズで、これを突き止めようとしているようです。

  1. 単一責任の原則
  2. オープン/クローズの原則
  3. リスコフの置換原理
  4. インターフェース分離の原則
  5. 依存性逆転の原則
于 2011-12-16T16:59:12.117 に答える
14

JavaScript は、C++、C#、Java などに劣るという評判を時々受けることがありますが、実際にはオブジェクト指向の機能も備えた非常に強力な関数型プログラミング言語です (ただし、実際にはオブジェクト指向として分類されていません)。

おそらく多くの開発者は、JavaScript の貧弱なプログラミング手法とその結果としてのバグのある動作に慣れているため、これを軽視しています。理由は不明ですが、クライアント側でずさんであることはより受け入れられるようです。これは私が変更したいものです。

これらのSOLIDの原則は堅実だと思います。(しゃれは意図されていません)。これらの規則に従えば、ずさんなコード、ショートカット、およびアーキテクチャの欠如によって生じる技術的負債が蓄積する可能性が低くなります。コードの保守性、再利用性、モジュール性が向上し、密結合が緩和され、スケーラビリティと拡張性が向上します。また、あなたの製品がただ無謀に叩きつけられるのではなく設計されたときに、JavaScript の全能力を実証することに貢献することにもなります。

このドキュメントでは、SOLID の基礎について説明します。C++、Java、JavaScript、またはその他のオブジェクト指向言語を参照している場合でも、同じ規則が適用されます。

Code Project - SOLID オブジェクト指向プログラミングの原則

colorcoding.net の JavaScript の概念に関する詳細情報を次に示します。

于 2011-01-17T10:06:14.880 に答える
4

この受け入れられた答えには欠陥があります。以下の Ryan Rensford がリンクしている 5 つの記事を読むことをお勧めします。最後の記事は、私が伝えられなかった次の結論に達します (私が強調):

検証の過程で、SOLID 設計原則が他の言語よりも JavaScript にどのように適用されるかについてさまざまな違いが見られましたが、それぞれの原則はJavaScript 開発においてある程度の適用可能性があることが示されました。

SOLID は、オブジェクト指向プログラミング向けです。JavaScript はプロトタイプベースの言語ですが、OOP 方式でのプログラミングを可能にします (実際にそうしようと努力している場合)。多くの人は、学んだ言語 (C++/C#/Java など) のパラダイムを他の言語 (JavaScript) に押し付けようとするべきではないと考えています。これもその結論に達するJSのOOPに関する記事です。

Prototype.js、 CoffeeScript、およびJohn Resig の Simple JavaScript Inheritance (それぞれにトラップがあります) には、OOP へのアプローチがいくつかあります。

しかし、SOLID の用語 (インターフェース、抽象化) を標準の JavaScript に適切に適用するのは困難です。「S」と、おそらく「L」(これは良い概念です) を適用できます。しかし、さらに先に進むには、インターフェースのような構成要素 (いずれにせよ動的言語では見つけるのが難しく、コントラクトが機能する可能性があります) と、継承/変更を制限する機能が必要になります。

于 2011-01-17T10:08:00.057 に答える