前回、ソースコードの分割方法を検討した。 ライブラリ化せずに、VC++のフィルタやファイルシステム上のディレクトリ構造にて分類した。 今回はそれに加えて名前空間もつけてみた。
入手先
名前空間
- ytyaru::Library::Uuid
- ytyaru::Framework::SingleWindow
- ytyaru::Framework::MultiWindow
- ytyaru::Framework::MultiWindow::PartWndProc
ポイント
LibraryとFrameworkの部分にのみ名前空間をあたえた。
メインの部分は名前空間は与えていない。理由は以下の通り。
- 再利用を考えていない
- 重複はないとタカをくくっている
- 面倒
もし与えるとしたら以下のようになるだろう。再利用しないなら冗長になるだけ。 他のプロジェクトへソースコードをコピペした場合、修正が面倒になる。
ytyaru::ProjectSplit201607300826
ディレクトリ構造
- Solution
- Release
- .exe
- Project
- src
- Main
- Program.cpp
- Window1
- Window1.h
- Window1.cpp
- Initialize
- InitializeWndProc.h
- InitializeWndProc.cpp
- Keyboard
- KeyboardWndProc.h
- KeyboardWndProc.cpp
- Main
- src
- src
- Library
- Uuid
- Uuid.h
- Uuid.cpp
- Uuid
- Framework
- MultiWindow
- IWndProc.h
- WndProcMapper.h
- WndProcMapper.cpp
- WndClassRegister.h
- WndClassRegister.cpp
- PartWndProc
- IPartWndProc.h
- Window.h
- Window.cpp
- MultiWindow
- Library
- Release
ポイント
VC++フィルタ構造
- Solution
- Project
- Main
- Main
- Program.cpp
- Window1
- Window1.h
- Window1.cpp
- Initialize
- InitializeWndProc.h
- InitializeWndProc.cpp
- Keyboard
- KeyboardWndProc.h
- KeyboardWndProc.cpp
- Main
- Framework
- MultiWindow
- IWndProc.h
- WndProcMapper.h
- WndProcMapper.cpp
- WndClassRegister.h
- WndClassRegister.cpp
- PartWndProc
- IPartWndProc.h
- Window.h
- Window.cpp
- MultiWindow
- Library
- Uuid
- Uuid.h
- Uuid.cpp
- Uuid
- Main
- Project
ポイント
無駄なところは排除した。
修正
全体的に以下のように修正した。
- LibraryとFrameworkに名前空間を設定
- Uuidの別ファイル化
- これまで
WndClassRegister
、SingleWindow::Window
にUuid取得用関数をもたせていたが削除できた。
- これまで
- ヘッダにある
using mamespace ...;
を削除- 名前空間の汚染を最小限に抑える
- 代わりにcppで
using Namespace::Class;
を使用
所感
少しずつ完成度が高まってきたかも? 見た目のこともやりたいが、こういう地味なところもやりたい。