teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

宣言上のミスを訂正

2017/03/15 03:31

投稿

haru666
haru666

スコア1593

answer CHANGED
@@ -42,14 +42,14 @@
42
42
 
43
43
  class Service
44
44
  {
45
- void Add(Model::Hoge *hoge);
45
+ void AddHoge(Model::Hoge *hoge);
46
- Model::Hoge* Get(int hoge_id);
46
+ Model::Hoge* GetHoge(int hoge_id);
47
47
 
48
- void Add(Model::Fuga *fuga);
48
+ void AddFuga(Model::Fuga *fuga);
49
- Model::Fuga* Get(int fuga_id);
49
+ Model::Fuga* GetFuga(int fuga_id);
50
50
 
51
- void Add(Model::Piyo *piyo);
51
+ void AddPiyo(Model::Piyo *piyo);
52
- Model::Piyo* Get(int piyo_id);
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 Add(Model::Hoge *hoge);
68
+ void AddHoge(Model::Hoge *hoge);
69
- Model::Hoge* Get(int hoge_id);
69
+ Model::Hoge* GetHoge(int hoge_id);
70
70
 
71
- void Add(Model::Fuga *fuga);
71
+ void AddFuga(Model::Fuga *fuga);
72
- Model::Fuga* Get(int fuga_id);
72
+ Model::Fuga* GetFuga(int fuga_id);
73
73
 
74
- void Add(Model::Piyo *piyo);
74
+ void AddPiyo(Model::Piyo *piyo);
75
- Model::Piyo* Get(int piyo_id);
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->Get(id);
86
+ Model::Hoge *hoge = service->GetHoge(id);
87
87
  // do something here
88
88
  }
89
89
  ```

2

説明の修正

2017/03/15 03:30

投稿

haru666
haru666

スコア1593

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

追記

2017/03/15 03:29

投稿

haru666
haru666

スコア1593

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