【C#】regionを使ってソースコードを折りたたむ方法

C#などでコーディングしているとき、コード行数が長くってしまったときに使えるのが「region」と呼ばれるものです。Visual Studioでソースコードを記述するときにコードを折りたたんで表示してくれる機能です。

通常は #region ~ #endregion で間にまとめたいコードを記述して、IDE上で折りたたむことが出来ます。

region はコードを整理することが出来るという特徴もあるのですが、使いどころをしっかりと考えておかなければ、逆に可読性を下げてしまったり、保守が難しくなってしまうというデメリットもあるので注意が必要です。

regionの使い方

「region」は正式名称で「regionディレクティブ」と呼ばれています。口頭では単に「リージョン」って言っていることが多いです。折りたたんで表示したいソースコードを「#region ~ #endregion」で囲むだけです。「#region」の後にスペースを追加してコメントを記述することができます。

例えば「#region 〇〇」というように使用することができます。以下のコードをサンプルとします。

namespace App01
{
    public class Car
    {
        private string Name;

        #region Constructor
        public Car()
        {

        }
        #endregion

        #region Public methods
        public void Drive()
        {

        }

        public void Brake()
        {

        }
        #endregion
    }
}

上記のように記述した場合は以下のようにVisual Studio上で表示され、コードが折りたたまれて表示されます。適宜、種類ごとに分けたり、コンストラクタやメソッドなどを区切るために使用したりするようにすると良いでしょう。

region を使う注意点

#region ~ #endregion は単にソースコードを折りたたむだけの機能なので、用途をしっかりと決めておかないと保守性が下がってしまうという注意点があります。コードブロックを無視した使い方が出来るので、規約などで用途を決めておく方が無難です。

例えば、以下のように、メソッド内でregionを使うとコードが隠されているため、リファクタリングが必要かどうかを隠してしまう可能性があります。

namespace App02
{
    public class Car
    {
        private string Name;

        #region Constructor
        public Car()
        {
            #region Write message
            Console.WriteLine("走ります。");
            #endregion
        }
        #endregion

        #region Public methods
        public void Drive()
        {

        }

        public void Brake()
        {

        }
        #endregion
    }
}

大量の多次元配列などのリテラルを定義しなくてはいけない場合など、処理の間に大量のコードを記述する必要がある場合等は、#region ~ #endregion を使うことで可読性が向上する場合もあります。

region を使うのはソースコードの保守性を担保するために有効な手段の一つとして知っておくべきだと思いますが、多用しすぎることで逆に問題となってしまう場面もありますので、使い方をしっかりと考えて使うとよいでしょう。