c-sharp について
.NET、Blazor、Unity に携わる開発者向けの C# スキルガイドです。モダンな言語機能とアプリケーション設計を中心に、API、テスト、性能、セキュリティを扱います。
主な機能
- 01モダンな C# 構文と規約
- 02依存性注入のパターン
- 03REST API の設計
- 04非同期処理の性能実践
- 05ユニットテストの指針
- 06入力検証とセキュリティ
活用シーン
- 01.NET アプリのレイヤー設計
- 02RESTful サービスの構築
- 03非同期 I/O コードの作成
- 04ビジネスロジックのテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill c-sharpインストール後、Claude Code で/c-sharpを入力して読み込まれたか確認します。
詳細
C# 開発ガイドライン
.NET、Blazor、Unity、最新の C# 言語機能に関する深い知識を持つ、C# 開発のエキスパートとして対応します。
コードスタイルと構成
- 簡潔で慣用的な C# コードを、正確な例とともに記述します
- .NET と C# の規約およびベストプラクティスに従います
- 必要に応じて、オブジェクト指向および関数型プログラミングのパターンを使用します
- コレクション操作には LINQ とラムダ式を優先します
- わかりやすい変数名とメソッド名を使用します(例:
IsUserLoggedIn、GetUserById) - .NET の規約に従ってファイルを構成します(Controllers、Models、Services など)
命名規則
- クラス名、メソッド名、パブリックプロパティには PascalCase を使用します
- ローカル変数とプライベートフィールドには camelCase を使用します
- 定数には SCREAMING_SNAKE_CASE を使用します
- インターフェース名には「I」を付けます(例:
IUserService) - プライベートフィールド名にはアンダースコアを付けます(例:
_userRepository)
C# 言語機能
C# 10 以降の機能
- コードを簡潔にするため、ファイルスコープの名前空間を使用します
- 共通の名前空間にはグローバル using を使用します
- 不変のデータ型にはレコードを活用します
- 型チェックと分解にはパターンマッチングを使用します
- 適切な注釈を付けて nullable 参照型を使用します
最新の構文
- シンプルなメソッドやプロパティには式形式のメンバーを使用します
- ターゲット型 new 式(
new())を使用します - 簡潔な条件分岐には switch 式を使用します
- 文字列連結より文字列補間を優先します
エラー処理
- 想定される例外には try-catch ブロックを使用します
- ドメイン固有のエラーにはカスタム例外クラスを作成します
- パラメーターの検証には
ArgumentNullException.ThrowIfNull()を使用します - 適切な場合は、操作結果に Result パターンを実装します
- コンテキスト情報とともに例外をログに記録します
API 設計
- Web API には RESTful の規約に従います
- レイヤー間のデータ転送には DTO を使用します
- 適切な HTTP ステータスコードを実装します
- 横断的関心事にはアクションフィルターを使用します
- API に適切なバージョン管理を導入します
パフォーマンス
- I/O 待ちの操作には
async/awaitを使用します - 適切な場合はキャッシュを実装します
- ループ内での文字列連結には
StringBuilderを使用します - ジェネリックを使用してボックス化/ボックス化解除を回避します
- 高いパフォーマンスが求められる場面では
Span<T>とMemory<T>を使用します
依存性注入
- 依存関係にはコンストラクターインジェクションを使用します
- 適切なライフタイム(Scoped、Transient、Singleton)でサービスを登録します
- サービスの抽象化にはインターフェースを使用します
Program.csまたはStartup.csで DI を構成します
テスト
- xUnit または NUnit を使用してユニットテストを記述します
- モックには Moq または NSubstitute を使用します
- Arrange-Act-Assert パターンに従います
- ビジネスロジックの高いテストカバレッジを目指します
- 読みやすいアサーションには FluentAssertions を使用します
セキュリティ
- すべてのユーザー入力を検証します
- SQL インジェクションを防ぐため、パラメーター化クエリまたは Entity Framework を使用します
- 適切な認証と認可を実装します
- シークレットは構成情報(User Secrets、Azure Key Vault)に保存します
- すべての通信に HTTPS を使用します
Blazor 固有のガイドライン
- コンポーネントベースのアーキテクチャを使用します
- 適切な状態管理を実装します
- 共有状態にはカスケードパラメーターを使用します
@keyと仮想化を使用してレンダリングを最適化します- コンポーネントのライフサイクルイベントを適切に処理します
Unity 固有のガイドライン
- ゲームオブジェクトの振る舞いには MonoBehaviour を使用します
- データコンテナーには ScriptableObjects を実装します
- モジュール性を高めるため、コンポーネントパターンに従います
- 時間ベースの処理にはコルーチンを使用します
- 頻繁にインスタンス化されるオブジェクトにはオブジェクトプーリングを実装します
コメント
Markdown 対応