スポンサーリンク

C# コードのベストプラクティス集(命名規則・コメント・例外処理)

C# での開発において、ただ動くコードを書くことと、読みやすく保守性の高いコードを書くことは別物です。この記事では、チーム開発や長期運用を見据えた C# のベストプラクティスを「命名規則」「コメントの書き方」「例外処理」の3つの観点から紹介します。

命名規則(Naming Conventions)

命名はコードの可読性と保守性に大きく関わる重要な要素です。

1. パスカルケースとキャメルケースを正しく使う

  • クラス・インターフェース・メソッド名: PascalCase(先頭大文字)
  • ローカル変数・引数: camelCase(先頭小文字)
public class UserService
{
    public void RegisterUser(string userName) { }
}

2. 意味のある名前を使う

  • a, b, x1 など意味のない名前は避ける
  • 何を表す変数・関数なのかが明確に分かるように
// 悪い例
int d = 10;

// 良い例
int maxRetryCount = 10;

3. インターフェース名には “I” を付ける

public interface ILogger { }

コメントの書き方

1. コードの「なぜ」を書く

  • 何をしているかよりも、なぜその処理が必要かを書く
// タイムゾーンをUTCに変換することで日時の比較を一貫させる
var utcTime = localTime.ToUniversalTime();

2. 無意味なコメントは書かない

// for文を実行する(←意味がない)
for (int i = 0; i < 10; i++) { }

3. ドキュメンテーションコメントを活用する

  • メソッドやクラスには XML コメントを
/// <summary>
/// 指定したユーザーIDの情報を取得します。
/// </summary>
public User GetUserById(int id) { }

例外処理のベストプラクティス

1. キャッチして何もしないのはNG

try
{
    DoSomething();
}
catch (Exception)
{
    // 何もせずに黙殺 → デバッグ困難になる
}

2. 具体的な例外型をキャッチする

  • 予期しうる例外ごとにハンドリングを分ける
try
{
    File.ReadAllText("config.json");
}
catch (FileNotFoundException ex)
{
    logger.LogError("設定ファイルが見つかりません: " + ex.Message);
}

3. 例外の再スローは throw 単体で行う

catch (Exception ex)
{
    // NG: スタックトレースが失われる
    // throw ex;

    // OK:
    throw;
}

まとめ

ベストプラクティスを守ることは、将来の自分や他の開発者がコードを読みやすくする最大の投資です。命名、コメント、例外処理という基本的な部分を丁寧に扱うことで、バグの早期発見やメンテナンス性の向上に大きく貢献できます。

チームでルールを統一し、日々のコーディングでも意識して取り入れていきましょう。

.NET
スポンサーリンク
シェアする
trelab