整理整頓は大事だよ(名前空間)
皆さん、整理整頓していますか。
お部屋もパソコンのファイルも、整理整頓しないと散らかってしまいますよね。
まったく同じように、プログラミングの世界でも、整理整頓はとっても大切です。
今日は、プログラミングの整理整頓について勉強しましょう。
収納スペースを作ろう(名前空間)
何かを整理整頓するためには、収納スペースが必要です。
パソコンだったら、フォルダが収納スペースですね。
この中に、いろいろなファイルを収納します。
では、C#では、何をどこへ整理整頓するのでしょうか。
名前空間とクラス
C#では、名前空間という収納スペースがあります。
ここに、クラスを整理整頓します。
イメージとしては、パソコンのフォルダが名前空間、ファイルがクラスです。
フォルダ -> フォルダ -> フォルダ -> ファイル 名前空間 -> 名前空間 -> 名前空間 -> クラス
フォルダやファイルの階層構造の句切れ目は、Windowsなら\マーク、Linuxなら/マークですね。
C#の名前空間では、階層構造の句切れ目は、『.』です。
System名前空間の中の Collecrions名前空間の中の Generic名前空間の中の Listクラス System.Collections.Generic.List
C:ドライブの中の Usersフォルダの中の CSharpLearnerフォルダの中の Desktopフォルダの中の CSharpLearnerフォルダの中の CSharpLearningMemo.txtファイル C:\Users\CSharpLearner\Desktop\CSharpLearning\CSharpLearningMemo.txt
名前空間のつけ方
名前空間の仕組みが分かったところで、具体的にどのような名前を付けるべきでしょうか。
マイクロソフトのガイドラインがあります。
英語からの機械翻訳なので、かいつまんだ概要をお伝えします。
組織名.製品名または技術名.特徴.下位の名前空間 単語の行頭が大文字のパスカルケースが原則です。
組織名がTechPjin、製品名がCSharpTutorial.下位の名前空間がNameSpaceTutorialです。
TechPjin.CSharpTutorial.NamespaceTutorial
収納したクラスの使い方
名前空間にクラスを格納したら、次は呼び出して使わなければなりません。
名前空間とクラス名をすべて書く
最も基本的なのは、すべての名前空間とクラス名を書くことです。
例として、整数(int)のリストのクラスに属するもの(インスタンス)を登場させます。
// System名前空間の中のCollections名前空間の中のGeneric名前空間の中のListクラスのものを登場させている var severalIntegers = new System.Collections.Generic.List<int>(){1, 2, 3};
usingを使う
すべての名前空間とクラス名を書くと長くなるので、多くの場合、プログラムの最初に、『using 名前空間』という決まった形式の文言を使います。
// ここでusingというキーワードを使って、どの名前空間を使うか宣言 using System.Collections.Generic; // (中略) // クラス名のListだけで、新しいリストを作れるようになった。 var severalIntegers = new List<int>(){1, 2, 3};
usingと別名を使う
『using』を使う際、自作のクラスと備え付けのクラス、もしくは自作のクラス同士の衝突が起こることがあります。
それを防ぐのが、『usingと別名の組み合わせ』です。
// 整数をFizzBuzzに変換するFizzBuzzクラスを二つ作ってしまった(中身は全く同じ) // 別名としてFizzBuzz1とFizzBuzz2をそれぞれにつけた。 using FizzBuzz1 = TechPhin.CSharpTutorial.Test1.FizzBuzz; using FizzBuzz2 = TechPhin.CSharpTutorial.Test2.FizzBuzz; // (中略) // 別名をつければ大丈夫 // 100をFizzBuzzに変換 var firstFizzBuzz = FizzBuzz1(100); // 100をFiizBuzzに変換 var secondFizzBuzz = FizzBuzz2(100);
練習問題
問題1. ConsoleFairyClassの名前空間を変更してください。
namespace ConsoleFairy { public class ConsoleFairy() { } }
問題2. 適切なusingをつけてください。
全修飾名が長いクラスの利用です。
namespace TechPjin.CSharpTutorial.NamespaceTutorial { class MainClass { static void Main(string[] args) { System.Console.WriteLine("長いクラスを利用するときはusingを使おう"); var evens = new System.Collections.Generic.List<int>() {0, 2, 4}; } } }
問題3. 適切なaliasとusingを使ってください。
namespace TechPjin.CSharpTutorial.NamespaceTutorial { class MainClass { static void Main(string[] args) { System.Console.WriteLine("エイリアスを使うとクラス名を短く書けますよ。"); } } }
まとめ
今回は名前空間について学びました。
これで、皆さんがプログラムをたくさん書いても、
ごちゃごちゃにならず整理整頓できますね。
次回は、オブジェクトを登場させる方法、コンストラクタについて詳しく解説します。
ゲーム制作関連のオススメ連載リンク
とっても手軽なゲーム制作体験!
Unityゲーム開発基礎
実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発