C#で関数型で記述するとき、クラスが不変で機能が純粋であることを静的に検証するツールはありますか?私はそれが一般的なケースでは不可能であると想像していますが、時間の90%が適切なツールがまだ役立つでしょう。いくつかのC#コードが機能していることを静的に検証する方法は?
すべてのメンバー変数がreadonly
であることをチェックし、すべてのメンバータイプ(およびすべての表示可能なサブタイプ)も(再帰的に)不変であると考えることができます。私は、機能のチェックがどのように動作するのか分かりません。
なぜですか?私がFPを気に入っているのと同じくらい、すでにマルチパラダイム言語を使用しているなら、あなたはそのパラダイムのための唯一のパラダイムに自分自身を制限すべきではありません。純粋な関数と不変のデータ構造は、C + +で非PODクラス(自由な関数なし)しか持たないことが良いOOPコードを保証するので、良いFP-ishコードの保証と同程度です。 – delnan
@delnan - 私はOPがこれをやっているとは思わないでしょう。私は、コードがF#から呼び出されたときに、奇妙な副作用を伴わないC#で関数コードを書こうとする状況を見ることができます。 –
変更可能なオブジェクトの周りを渡すコードを読むとき、私は変更がどこで起こったのか、どこにないのかを知ることは難しいです。突然変異の副作用によるコード間の暗黙の通信は、発見するのが非常に困難です。将来のコードリーダーにとっては、純粋な/不変の注釈は非常に役に立つと思うので、コードベース全体ではなく、FP以外のコードに突然変異や副作用の検索を制限することができます。 – pauldoo