dotnet-best-practices について
.NET/C#プロジェクト向けのコーディングガイダンススキルです。アーキテクチャ、依存性注入、非同期処理、テスト、セキュリティ、AI連携の実践事項を扱います。
主な機能
- 01XMLドキュメントと名前空間の規約
- 02依存性注入とサービス登録
- 03非同期処理と例外管理
- 04MSTest、FluentAssertions、Moqによるテスト
- 05設定検証とローカライズリソース
- 06Semantic Kernelとセキュアコーディング
活用シーン
- 01公開型やメンバーの文書化
- 02サービス依存関係とライフタイムの確認
- 03非同期コードと例外処理の改善
- 04設定、テスト、AI連携の実装計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ github/ awesome-copilot --skill dotnet-best-practicesインストール後、Claude Code で/dotnet-best-practicesを入力して読み込まれたか確認します。
詳細
.NET/C# ベストプラクティス
あなたのタスクは、${selection} 内の .NET/C# コードが、このソリューション/プロジェクトに固有のベストプラクティスを満たしていることを確認することです。これには以下が含まれます:
ドキュメントと構造
- すべてのパブリッククラス、インターフェイス、メソッド、およびプロパティに対して、包括的な XML ドキュメントコメントを作成する
- XML コメントにパラメーターの説明と戻り値の説明を含める
- 確立された名前空間構造に従う:{Core|Console|App|Service}.{Feature}
デザインパターンとアーキテクチャ
- 依存性注入にプライマリコンストラクター構文を使用する(例:
public class MyClass(IDependency dependency)) - ジェネリック基底クラスを用いたコマンドハンドラーパターンを実装する(例:
CommandHandler<TOptions>) - 明確な命名規則を備えたインターフェイス分離を使用する(インターフェイスの先頭に「I」を付ける)
- 複雑なオブジェクトの生成にはファクトリパターンに従う。
依存性注入とサービス
- ArgumentNullException による null チェックを伴うコンストラクター依存性注入を使用する
- サービスを適切な有効期間(Singleton、Scoped、Transient)で登録する
- Microsoft.Extensions.DependencyInjection のパターンを使用する
- テスト容易性のためにサービスインターフェイスを実装する
リソース管理とローカライゼーション
- ローカライズされたメッセージとエラー文字列に ResourceManager を使用する
- LogMessages と ErrorMessages のリソースファイルを分離する
- リソースには
_resourceManager.GetString("MessageKey")を介してアクセスする
Async/Await パターン
- すべての I/O 操作と長時間実行タスクに async/await を使用する
- 非同期メソッドから Task または Task を返す
- 適切な箇所で ConfigureAwait(false) を使用する
- 非同期の例外を適切に処理する
テスト基準
- アサーションには FluentAssertions を用いた MSTest フレームワークを使用する
- AAA パターン(Arrange、Act、Assert)に従う
- 依存関係のモックには Moq を使用する
- 成功シナリオと失敗シナリオの両方をテストする
- null パラメーターの検証テストを含める
構成と設定
- データ注釈を備えた厳密に型指定された構成クラスを使用する
- 検証属性(Required、NotEmptyOrWhitespace)を実装する
- 設定には IConfiguration バインディングを使用する
- appsettings.json 構成ファイルをサポートする
Semantic Kernel と AI 統合
- AI 操作には Microsoft.SemanticKernel を使用する
- 適切なカーネル構成とサービス登録を実装する
- AI モデル設定(ChatCompletion、Embedding など)を処理する
- 信頼性の高い AI 応答のために構造化出力パターンを使用する
エラー処理とログ記録
- Microsoft.Extensions.Logging を用いた構造化ログを使用する
- 意味のあるコンテキストを伴うスコープ付きログを含める
- 説明的なメッセージを伴う特定の例外をスローする
- 想定される失敗シナリオには try-catch ブロックを使用する
パフォーマンスとセキュリティ
- 該当する場合は C# 12+ の機能と .NET 8 の最適化を使用する
- 適切な入力検証とサニタイズを実装する
- データベース操作にはパラメーター化クエリを使用する
- AI/ML 操作には安全なコーディングプラクティスに従う
コード品質
- SOLID 原則への準拠を確保する
- 基底クラスとユーティリティを通じてコードの重複を避ける
- ドメインの概念を反映した意味のある名前を使用する
- メソッドを焦点を絞ったまとまりのあるものに保つ
- リソースに対して適切な破棄パターンを実装する
コメント
Markdown 対応