SOLIDの原則 は、オブジェクト指向の設計について考えるときに非常に役立ちます。
関数型プログラミング向けに調整された、言語に依存しない原則の同様の/同等のセットはありますか?
同等のものを見つけるのは少し難しいですが、私は試すことができます:
SOLIDは、機能的/命令的レルムにとっても良いアイデアであることがわかりました。
[〜#〜] srp [〜#〜]-「1つのことだけを行う」は、そもそも命令型プログラミングから取られたものです。小さく焦点を絞った機能があると良いでしょう。
[〜#〜] ocp [〜#〜]-コードを変更せずに動作を変更できるようにすることは良いことです。関数型プログラミングでは、継承よりも高次関数を使用しますが、原則は同じです。
[〜#〜] lsp [〜#〜]-関数指向プログラミングでは、オブジェクト指向の場合と同じように、いくつかのインターフェイスコントラクトを順守することが適切です。並べ替え関数がコンパレータを使用する場合、「0は等しい、負の結果よりも小さい、正の結果よりも大きい」という動作が期待されます。
[〜#〜] isp [〜#〜]-ほとんどの関数型言語にはまだ構造体があります。関数が必要とするデータの最小セットを指定することは、依然として良い習慣です。データへの最も固有性の低いインターフェイスを要求すること(Tの列挙が同様に機能するのに、なぜListのintを使用するのか)は、依然として良い習慣です。
[〜#〜] dip [〜#〜]-関数にハードコーディングするのではなく、関数(またはそれらを取得するための高次関数)にパラメーターを指定して、値を取得するのも同じですオブジェクト指向のような関数型プログラミング。
オブジェクト指向プログラミングを行う場合でも、これらの原則の多くはオブジェクト内のメソッドの設計にも適用されます。