回答編集履歴
3
宣言上のミスを訂正
answer
CHANGED
@@ -42,14 +42,14 @@
|
|
42
42
|
|
43
43
|
class Service
|
44
44
|
{
|
45
|
-
void
|
45
|
+
void AddHoge(Model::Hoge *hoge);
|
46
|
-
Model::Hoge*
|
46
|
+
Model::Hoge* GetHoge(int hoge_id);
|
47
47
|
|
48
|
-
void
|
48
|
+
void AddFuga(Model::Fuga *fuga);
|
49
|
-
Model::Fuga*
|
49
|
+
Model::Fuga* GetFuga(int fuga_id);
|
50
50
|
|
51
|
-
void
|
51
|
+
void AddPiyo(Model::Piyo *piyo);
|
52
|
-
Model::Piyo*
|
52
|
+
Model::Piyo* GetPiyo(int piyo_id);
|
53
53
|
}
|
54
54
|
```
|
55
55
|
|
@@ -65,14 +65,14 @@
|
|
65
65
|
|
66
66
|
class Service
|
67
67
|
{
|
68
|
-
void
|
68
|
+
void AddHoge(Model::Hoge *hoge);
|
69
|
-
Model::Hoge*
|
69
|
+
Model::Hoge* GetHoge(int hoge_id);
|
70
70
|
|
71
|
-
void
|
71
|
+
void AddFuga(Model::Fuga *fuga);
|
72
|
-
Model::Fuga*
|
72
|
+
Model::Fuga* GetFuga(int fuga_id);
|
73
73
|
|
74
|
-
void
|
74
|
+
void AddPiyo(Model::Piyo *piyo);
|
75
|
-
Model::Piyo*
|
75
|
+
Model::Piyo* GetPiyo(int piyo_id);
|
76
76
|
}
|
77
77
|
```
|
78
78
|
|
@@ -83,7 +83,7 @@
|
|
83
83
|
|
84
84
|
void Client::SomeFunction(int id)
|
85
85
|
{
|
86
|
-
Model::Hoge *hoge = service->
|
86
|
+
Model::Hoge *hoge = service->GetHoge(id);
|
87
87
|
// do something here
|
88
88
|
}
|
89
89
|
```
|
2
説明の修正
answer
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
}
|
54
54
|
```
|
55
55
|
|
56
|
-
こう書かれているよりも以下のように
|
56
|
+
こう書かれているよりも以下のようにした方がスコープの穢れは少なくなります。
|
57
57
|
```C++
|
58
58
|
// service.h
|
59
59
|
namespace Model
|
@@ -89,7 +89,8 @@
|
|
89
89
|
```
|
90
90
|
|
91
91
|
上記はとても簡単なサンプルですが、プロトタイプ宣言の意味はなんとなくわかると思います。
|
92
|
-
|
92
|
+
特にヘッダファイルの更新によるオブジェクトファイルのリビルドを抑制することができます。
|
93
|
+
後者のサンプルであれば"fuga.h/piyo.h"の更新時にclient.cppがリビルドされることはありません。
|
93
94
|
特に古い巨大なモノリシックアプリケーションでは、このテクニック一つでコンパイル時間がずっと変わってきます。
|
94
95
|
|
95
96
|
---
|
1
追記
answer
CHANGED
@@ -98,6 +98,8 @@
|
|
98
98
|
cppファイル内ではしません。cppファイルでは多くても名前空間の宣言は一種類で、それが無名名前空間の宣言だからです。
|
99
99
|
インライン関数用のファイルでは名前空間を直接記述することがないので当然インデントしません。
|
100
100
|
|
101
|
+
(追記:ヘッダファイルは体外的なところで、原則マイルールを適用せず、読みやすく、クリーンで、情報は多くても実コードの少ないファイルにしたいと考えています。一方でCPPファイルは編集時の快適さを求めており、関数の記述開始地点から終了地点までしかファイルを読まない=インデントが無いのが自然と考えているため、ボディとヘッダで違うルールを適用しています。)
|
102
|
+
|
101
103
|
```
|
102
104
|
// ヘッダファイル
|
103
105
|
namespace Name
|