Unity / VRゲーム開発日記@長崎

Unityを使ったVRのゲーム開発をやってます。

regionとコードのテンプレート

みなさんは、regionを使ってますか?


C#の機能になりますが、

regionを使うと、

#region 名称

コードコードコードコードコードコードコード
コードコードコードコードコードコードコード
コードコードコードコードコードコードコード
コードコードコードコードコードコードコード

#endregion

という部分を、エディタ上で折りたたむ(一時的に非表示)ことができます。


※折り畳み後

名称

折りたためるかは、エディタの機能になるので、
単純なテキストエディタとかでは折りたためないですが。


自分は、regionを公開単位や、メソッド・プロパティ、
単位等でくくって使ってます。


といっても、実際におりたたむこと自体はほとんどないです。


ただ、コードを書く場所が決定されるという事が非常に機能しています。


コードがないと説明しづらいので、
とりあえず、自分の使ってるMonoBehaviour用のテンプレートを貼ります。

using UnityEngine;
using System.Collections;

namespace _hoge
{
	public class _copypast : MonoBehaviour
	{

		#region enum
		
		#endregion

		
		#region const
		
		#endregion

		
		#region public property
		
		#endregion
		
		
		#region private propety
		
		#endregion
		
		
		#region public method
	
		#endregion
		
		
		#region private method
	
		
		#endregion
		
		
		#region event
	
		void Start ()
		{
		
		}

		void Update ()
		{
		
		}
		
		#endregion
	}

}


こんなかんじで、定数、プロパティ、メソッド、イベント
といったくくり、それぞれがprivateかpublicかでわけてます。


定数(enum,const)は実際使わないことも多いので、
private、publicまでは分けてません。

イベントに関しては、private メソッドとも取れますが、
event周りは挙動の主軸になるのと、どれも同じパターンがあるので
ひとくくりにしています。


public、privateの順番は個人的には公開しているものが上っていう感覚があるんですが、
この辺りは人によって感覚が違うでしょうね。


以上の様に、よく使うregionをテンプレートとしてつかってます。
これによって、関数やプロパティをコードのどのあたりに書けばよいかってのが
決まるので、記述の順番で迷うという時間を削減することができます。


ちなみに、publicなプロパティ内等のregion内での順番は、特に決めていなく
基本的には追加したものを下に、関連が近い関数は近づけたり等を
あとで行ったりします。


また、上のテンプレートは
_copypast.csという名前でプロジェクトに追加しています。


こうしておくと、テンプレートをすぐに参照できるので便利です。
コピペ補助アプリなんかで代用してもよいですが、
ちょっと整形したいときに、記述的に矛盾がないかをコンパイラが判断してくれるという
良い面もあります。



以上、regionとテンプレートについてでした。
実際にプログラムの挙動には関係ないですが、
コードの見やすさというのはコードのメンテナンスしやすさに直結し、
良いプログラムが作れるかの非常に重要な要素のひとつなので、
コードの書きやすさを一度意識してみてはどうでしょうか。