
C++ でコンソールアプリケーションを作っています。
プログラムの規模が大きくなり,クラスの数も増えてきました。
これまでヘッダファイルとクラスを一対一対応させてきました。
クラスの増加に伴い,ヘッダファイルがかなり増えてしまいました。
疑問に思ったのですが 1 つのヘッダファイルに記述するクラスの個数に,決まりはあるのでしょうか?
ためしに 1 つのヘッダファイルに 2 つのクラスを書くと,問題なく動作しました。
ちなみに,その 2 つのクラスの関係は,お互いに完全に独立し合っている関係です。
(継承や friend の利用など一切なし,ということです。)
1 つのヘッダファイルに複数のクラスを書くことは OK なのでしょうか?
またこうすることで生じる問題があれば,お聞かせいただければ幸いです。
(プログラミング超初心者につきマヌケな質問をしているかもしれません)
No.2ベストアンサー
- 回答日時:
言語に規制がないのは確かです。
Javaとかみたいに、publicがひとつとか、ファイル名とクラス名が一致してないとだめとかいうこともありません。
C++のファイルを分けるというのは、意味合い的には、
Javaとかでいうpackageわけ(ディレクトリ分け)にも近いものがあるので、
(実際には、論理構成とファイル構成が対応付けられてるJavaのpackageとは違い、
C++では翻訳単位の話と名前空間の話は別ですけど、前者的な観点でみて)
1クラス=1ヘッダというよりは、1パッケージ=1ヘッダの方が好ましいという考え方もあります。
# MFCなんかはボテッとしたクラスが基本なので、
# デフォルトで1クラス=1ヘッダを作ろうとしますけど…。
本当に、何の関係もないものをまとめるのは管理上もお勧めしませんが、
(実際の依存関係とは直接関係なく)意味的に関連のあるもの
(同一パッケージに属するようなもの)はまとめてもありだと思います。
ほぼすべてが「1パッケージに1クラスづつしかない」ということは、
まともに設計されてればそうそうないと思いますので、
この程度の指針でもファイル数の削減は可能かと思います。
No.1
- 回答日時:
がると申します。
んっと…「言語仕様的な規則」は「ない」です。
ただ、可視性やら保守メンテナンスの観点からは…微妙になります。
曰く「ファイル数が多いと管理しきれない」
vs
曰く「1ファイルに複数クラスが書いてあると可視性が悪い」
どっちもどっちですねぇ。
個人的には
・原則として1ファイル1クラス
・ただし「極めて密接なもの」の場合複数クラスを1ファイルに書くこともあり
・ファイル名の前方一致で「近しいクラス」をまとめる
というルーリングでやってますが。
まぁ「現場の流儀に従う」のが一番かもしれません。
回答くださり,ありがとうございます。
> ・原則として1ファイル1クラス
> ・ただし「極めて密接なもの」の場合複数クラスを1ファイルに書くこともあり
> ・ファイル名の前方一致で「近しいクラス」をまとめる
書物などを開いても,ヘッダファイルの「流儀」の記述は少なく,ここで質問してみてよかったです。
ファイル名なども考慮に入れれば,よりいっそう,管理しやすくなるというのは,参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
恋愛
-
UMLのクラス図はmain()も含むん...
-
main()を持つクラスが2つ以上...
-
どこからも呼ばれていない無意...
-
配列の重複する値とその個数を...
-
EclipseでJSPのコンパイルエラー
-
共通で使う関数を集めたクラス...
-
IPアドレスの3バイト目の呼び方
-
そんなにお金がなくても年に1度...
-
CImageクラスをVisualC++6.0で...
-
java eclipse 型に解決できません
-
中学生です。 私は教室の黒板に...
-
JSP jsp:usebean で総称型クラ...
-
Eclipseのimport文
-
Cstring(日本語含む)をcharに...
-
アクセス指定子 private の具体...
-
ATLとMFCの違いは何でしょうか?
-
ギガスイッチについて
-
定数/UTILクラス等の置き場所に...
-
同じパッケージ、クラス名が含...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
僕の出身中学校は200人同級生が...
-
今日は こどもの日 で、良い天...
-
どこからも呼ばれていない無意...
-
そんなにお金がなくても年に1度...
-
中学生です。 私は教室の黒板に...
-
恋愛
-
EclipseでJSPのコンパイルエラー
-
java eclipse 型に解決できません
-
共通で使う関数を集めたクラス...
-
main()を持つクラスが2つ以上...
-
同一パッケージにあるクラスが...
-
配列の重複する値とその個数を...
-
「隣の芝生は青く見える」現象...
-
重複エラーを解決するには
-
UMLのクラス図はmain()も含むん...
-
複数のクラスで共通した関数を...
-
VBAもしくはVB6:クラスの中で...
-
命名規約は連番でいいのか?
-
eclipse でクラスに色
-
3年間同じクラスになる確率
おすすめ情報