namespace
プログラムを組んでいると別の用途だけど名前が被ってしまう事がよくあります。
又、複数人での開発やSDK内の実装と競合してしまう事も多いです。
そんな時に有効なのが名前空間(namespace)です。
namespace を使うことで用途やライブラリ、アプリケーション等の様々な単位で処理を分けることができます。
namespace の使い方
今回は例として namespace を使って同名の構造体を2つ作ります。
namespace App { struct Vector { float x, y, z; }; } namespace Library { struct Vector { float x, y, z, w; }; } void Func(void) { // AppのVector App::Vector appVector; // LibraryのVector Library::Vector libraryVector; }
このように Vector という名の構造体が2つ作ることができました。
namespace を使うことで定義が別物として認識します。
又、namespace 内であれば namespace の記述を省略できます。
namespace App { void Func(void) { // AppのVector Vector appVector; } }
アプリケーションの実装は全て namespace App 内で行う等の実装をすれば他とぶつかることなくキレイなコードが書けたりします。
ライブラリやゲームエンジンもこのような作りをしているものが多いので namespace を使ってキレイで安全なコードを目指していきましょう!
using namespace
namespace 内で書けば App や Library といった表記を省略できることが分かりました。
ただ、他の処理で使う場合に何度も Library:: 等と書くのは面倒だったりします。
そういった時には using namespace が使えます。
using namespace Library; void Func(void) { // LibraryのVector Vector appVector; }
このように using namespace ネームスペース名;と書くことで Library等のネームスペースを省略できます。
namespace の良さはプロジェクトが大きくなるほど実感できます。
なので規模が小さいうちから取り入れて問題が起きないように対処しておきましょう!