次の記事では、F# コードの書式設定に関するガイドラインと、言語の機能に関する話題のガイダンスと、その使用方法について説明します。
このガイダンスは、さまざまなプログラマ グループと共に大規模なコードベースでの F# の使用に基づいて策定されています。 一般に、このガイダンスは F# の使用を成功に導き、プログラムの要件が時間の経過とともに変化する場合のフラストレーションを最小限に抑えます。
優れた F# コードの 5 つの原則
F# コードを記述するときは常に、特に時間の経過と伴って変化するシステムでは、次の原則に留意してください。 以降の記事のすべてのガイダンスは、これら 5 つの点に由来します。
優れた F# コードは簡潔で、表現力があり、構成可能です
F# には、より少ないコード行でアクションを表現し、一般的な機能を再利用できる多くの機能があります。 F# コア ライブラリには、データの一般的なコレクションを操作するための便利な型と関数も多数含まれています。 独自の関数と F# コア ライブラリ (または他のライブラリ) 内の関数の構成は、日常的な慣用的な F# プログラミングの一部です。 一般的なルールとして、問題の解決策をコード行数の少ない行で表現できれば、他の開発者 (または将来の自分) は理解を深めます。 また、非トリガー タスクを実行する必要がある場合は、FSharp.Core などのライブラリ、F# が実行される 広大な .NET ライブラリ 、 NuGet 上のサードパーティ パッケージを使用することも強くお勧めします。
適切な F# コードは相互運用可能です
相互運用では、さまざまな言語でコードを使用するなど、複数の形式を使用できます。 他の呼び出し元が相互運用するコードの境界は、呼び出し元が F# に含まれている場合でも、正しく機能するための重要な部分です。 F# を記述するときは、他のコードが C# などの別の言語から呼び出されるかどうかなど、記述しているコードを呼び出す方法を常に検討する必要があります。 F# コンポーネント設計ガイドラインでは、相互運用性について詳しく説明しています。
適切な F# コードでは、オブジェクトの向きではなく、オブジェクト プログラミングが利用されます
F# では、 クラス、 インターフェイス、 アクセス修飾子、 抽象クラスなど、.NET のオブジェクトを使用したプログラミングが完全にサポートされています。 コンテキストに対応する必要がある関数など、より複雑な関数コードの場合、オブジェクトは、関数では不可能な方法でコンテキスト情報を簡単にカプセル化できます。 省略可能なパラメーターやオーバーロードの慎重な使用などの機能により、呼び出し元がこの機能を簡単に使用できるようになります。
適切な F# コードは、変更を公開せずに適切に実行されます
高パフォーマンスのコードを記述するには、変更を使用する必要があります。 結局のところ、コンピューターのしくみです。 このようなコードは多くの場合、エラーが発生しやすく、正しく取得するのが困難です。 呼び出し元に変更を公開しないようにします。 代わりに、パフォーマンスが重要な場合に 、変異ベースの実装を非表示にする機能インターフェイスを構築 します。
適切な F# コードはツール可能です
ツールは大規模なコードベースで作業する上で非常に重要であり、F# 言語ツールでより効果的に使用できるように F# コードを記述できます。 一例として、デバッガーで中間値を確認できるように、ポイントフリー(関数型プログラミングにおけるポイントスタイルの省略)スタイルを使いすぎないように注意することです。 もう 1 つの例は、エディターのツールヒントが呼び出しサイトでそれらのコメントを表示できるように、コンストラクトを記述する XML ドキュメント コメントを使用することです。 他のプログラマがツールを使用してコードを読み取り、ナビゲート、デバッグ、操作する方法を常に検討してください。
次のステップ
F# コードの書式設定ガイドラインでは、読みやすくするためにコードを書式設定する方法に関するガイダンスを提供します。
F# のコーディング規則では、F# プログラミングイディオムのガイダンスが提供されます。これは、より大きな F# コードベースの長期的なメンテナンスに役立ちます。
F# コンポーネントの設計ガイドラインでは、ライブラリなどの F# コンポーネントを作成するためのガイダンスを提供します。
.NET