• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VisualStudio 開発について)

VisualStudio 開発について

このQ&Aのポイント
  • VisualStudioでWindowsフォームアプリを作成する際のファイル管理方法を知りたい
  • ファイル数が多くなってしまい、まとめる方法を模索中
  • VisualStudioが自動で作成するファイルについても綺麗な管理方法を教えてほしい

質問者が選んだベストアンサー

  • ベストアンサー
  • haniriito
  • ベストアンサー率57% (12/21)
回答No.1

こんにちは。 まず、ご質問の内容はこれといった唯一の回答があるような性質のものではない点はご承知ですね?その上で私のやり方を書いてみます。 >いつもこの様に作成しているのですが、みなさんはどの様にファイル管理されているのでしょうか? 基本的にはクラス毎に別々のファイルで管理します。 とは言っても、クラスの種類数=.hファイルの数ではありません。関連するクラスのうち、結合度/関連度の強いものは一つのファイルにまとめたり、小さなユーティリティ的なクラスは種類毎にまとめたりします。 例えば、あるクラスAがあって、そのクラスAは別のクラスBからしかアクセスされないとします。そういうときは、思い切ってA.cppやA.hは削除して、B.cppの中でクラスAを宣言から書いてしまうこともあります。要は、クラスAは他のクラスから参照されないなら、ヘッダファイルとして他に公開する必要がないからです。それでB.cppというヘッダではないソースの方に書いてしまって、他からインクルードされないようにします(C++言語としては、やろうと思えばB.cppを#includeできるんですけどね)。 それから、例えば点や四角や三角形を表すクラス(構造体)なんかがあったと仮定すると、それらを別々の.hファイルに定義することはないでしょうね。まとめて一つの.hファイルで宣言すると思います。 >私の場合、ファイル数(class数)が多くなってしまい、一つのファイルにまとめようか悩んでいます。 全部を一つにまとめるんですか!?ちょっとやり過ぎでは・・・ 関連のあるものや依存性の強いものはまとめることはあるものの、基本的には個別のファイルで実装して、できるだけ他のクラス/モジュールへの依存性を低くした状態で独立したファイルに実装すべきだと思います。 >しかし、まとめる際にも、classの関係性が微妙な、ものがあり、綺麗にまとめる事ができません。 互いに関連性があって、スッパリ割り切れないのは当たり前ですね。でもそれなりに分類ができるはずですので、それで分けるものだと思います。 それでもゴチャゴチャするようであれば、クラス間のインターフェース設計がまだ曖昧な部分が多いんじゃないかと思います。 >おまけに、VisualStudioが自動で作成するファイル等があり、綺麗にファイル管理をする方法を模索中です。 まずVisualStudioが生成する.hや.cppファイルは名前を変更したり、要らなくなれば削除したりしてもよいことはご存じですよね?VisualStudioがクラス生成に応じてそのファイルを作るからと言ってそれを絶対に使わなければいけないことはありません。 VisualStudio上での管理(というか見た目の分類)をしたいという意味では、ソリューションエクスプローラで右クリックして「追加」→「新しいフィルタ」で適当な名前のフォルダを作ってそこに機能毎にソースファイルを入れていってはどうでしょうか? それとも、同じディレクトリにいっぱい.h/.cppファイルができるのがイヤなら、サブディレクトリを作ってそこに分類してもいいでしょう。サブディレクトリにある.h/.cppでもソリューションエクスプローラで「追加」しておけば、ちゃんとコンパイルしてくれるのはご存じですね。 更につっこんだやり方としては、お作りのアプリケーションの機能をもっと大きな単位で切り分けられるなら、いっそのことライブラリ化して別プロジェクトにしてしまうとか。それなら、完全に別ディレクトリでソースを管理できますし、ライブラリ呼び出しの呼び出しインターフェースとして整理できる、という点で、ソースファイル群のゴチャゴチャ感だけでなく、モジュール/クラス間の関係のゴチャゴチャ感も軽減されます。

tamuhiro1004
質問者

お礼

アドバイスありがとうございます。 非常に参考になりました。 新しいフィルタで挑戦してみようと思います。 ファイル管理はいつも悩んでいるのですが、微妙な関係なもんでいつも困っていました。 ディレクトリやフィルタをうまく使ってみようと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 初心者です。VisualStudioについて教えてください。(C++)

    初心者です。VisualStudioについて教えてください。(C++) VisualStudioのWindowsフォームプロジェクトを作成すると 「Form1」という簡易画面が自動で作成されます。 その画面にボタン等を追加していくと、そのボタン押下時の処理が 「Form1.h」にどんどん追加されていきます。 なぜヘッダファイルに処理の実装を記述していくのでしょうか? 基本的に、ヘッダとは関数やクラスを定義するだけのもので 実装はcppファイルに記述していくものだと研修等で教わったのですが。 なぜなのでしょう? ご教授下さい。 また、「Form1.h」ではなく「*.cpp」ファイルに実装を記述したい場合 どうのようにすればよいのでしょうか?

  • VisualStudio2008でフォルダ違いで同じソースコードファイ

    VisualStudio2008でフォルダ違いで同じソースコードファイル名 下記のようにフォルダ違いで同じファイル名のソースコードがるある場合は、 VisualStudio2008では認識してくれないのでしょうか? +type0+Type.h |    +Type.cpp +type1+Type.h      +Type.cpp それぞれのソースコードはクラス名も一緒なのですが、namespaceでわかられています。 namespace NType0 {   class CType   { } namespace NType1 {   class CType   { } 後から追加したType.cppでは意図的にCTypehogehoee::関数名として コンパイルエラーが起きるように記述しましたがVisualStudioはエラーを 吐きません。 ファイル名をユニークにしたところ正常にビルドできました。 上記について問題を解決する方法はあるのでしょうか?

  • VisualStudio2010の設定について

    VisualStudio2010を使用しC++でプロジェクトを作成しているのですが、 インクルードディレクトリのパスや リンカーの追加のライブラリディレクトリ、追加の依存ファイル 等の設定を毎回手動で行いプロジェクトを作成しているのですが、 設定項目が多く、毎回設定するのが大変です。 インクルードやリンカーの情報を保存しておく方法等ご存知の方がいたら教えて下さい。

  • C++ visualstudio グローバル変数

    C++のプログラミングに関する質問です。 visual studio2008を使用しています。 手元に非常に複雑なC++ファイルなどから構成されている1つのprojectがあります。(ヘッダファイルなどもあります) そのため、このprojectをデバッグすると、A.cppファイルをデバッグ→B.cppファイルをデバッグ→A.cppファイルをデバッグ→C.cppファイルをデバッグのように、色々なcppファイルを跨ってデバッグします。 1つのcppファイルには大量の関数があり、cppファイルの先頭や,関数外の部分に例えばA.cppで int test などと宣言すれば、A.cppファイル内ではtestと名付けた変数をすべての関数で使えます。 しかし、あくまでA.cppファイル内だけで使用できるだけで、別のBやC.cpp内で使うことはできません。 このtest変数をB.cppやC.cppファイルでも使えるようにするにはどうすればいいでしょうか? 上で挙げた例でいうなら、A.cppからB.cppファイルに移動する際の関数の引数として渡す方法は考えられますが、実際には、 test変数を使いたいのはかなり後に登場するcppファイルで関数の引数として扱うのは非常に大変です。 (Z.cppでtest変数を使いたい。しかしZ.cppに到達するまでにはA~Y.cppを通り、その間に登場するすべての関数でtestを引数にしなければならない) 関数の引数でtest変数を使えるようにする以外の方法がありましたたら教えていただけると幸いです。 実際にやりたいことは A.cpp内にある関数が実行されたらその数をカウントし(A.cppのこの関数は何度も呼び出される関数) //count ++ このcount++の値によってZファイルのある関数での動作を変えたいと思っています。 if(count<100){ printf("aaa"); } しかし、現状ではZ.cppファイル内ではcountが定義されていないので上のようなif文を書くとエラーになってしまいます。

  • VisualStudio2005 C++ クラスの追加について

    C/C++カテゴリですが質問内容はVisualStudio(C++)です。 当該しそうなカテゴリがなかったのでこちらに質問させて頂きます^^ [プロジェクト]-[クラスの追加]からクラスを作成する際、クラス名などをウィザード上で入力したら、.cpp/.h ができますよね。 内容としては、コンストラクタとデストラクタが書かれています。 これに決まったファイルコメントを同時に出力したいと考えています。 下に出力イメージを記します。 test.hの中身 ----------------------------------------------------------------- /*************************************************** * testクラスの宣言 * @author : * @see : ***************************************************/ /*↑を一緒に出力したい*/ /*↓は今まで通りの出力*/ #pragma once class test { public: test(); ~test(); }; ----------------------------------------------------------------- こんなことできますでしょうか? ・クラス作成ウィザードの実態はこいつでここをこう拡張すればできる ・クラスのテンプレートなるものがいて、そこに書いてやればいい のような回答で結構です。 ご存知の方はご教授ください:-)

  • 【VisualStudio2005】cssで定義した画像の表示

    Visualstudio2005にてASP WEBアプリケーションシステムを 構築しております。 cssファイルに以下の様な画像定義が存在します。 /* ヘッダー */ #head{ width:800px; height:60px; margin:0px 0px 0px 0px; padding:0px 0px 0px 0px; background:url(images/head_bg.gif); } これをVisualStudioのソースタブにて <!-- ヘッダー --> <div class="head"> <h1>XXXXXXXXX</h1> </div> と記述しておりますが、実行画面orデザインタブに反映されません。 ※<head>タグにcssファイル読み込みも記述しております。 上記の様な事はVisualStudioでは不可能な事でしょうか? ご助言の程、宜しくお願い致します。

  • phpでヘッターやサイドバーを読みこむ方法について

    Webサイトを作成したのですが、ページ数も多くなってきて管理が大変になりました。 そこで、ヘッダーやサイドバー、フッターを外部ファイルにし、phpで読みこむ方法というものをやってみたいと思っております。 一応、問い合わせフォームはphpで作成してあるので、またphpに挑戦したいと思っております。 そこで、気になることがるのですが、ヘッダーやサイドバー、フッターを外部ファイルにする場合、現状のhtmlで記述してあるままで3つに細分化して外部化すれば問題ないでしょうか? また、ファイル名の拡張子はhtmlのままで良いでしょうか? そして、読みこみ元のファイルの拡張子はphpだと思うのですが、中身としてはどのようなコードを使って読みこめば良いのでしょうか?

    • ベストアンサー
    • PHP
  • VC++2010での開発について

    『Microsoft Visual C++ 2010 Express』をインストールして、 Windowsアプリケーションを作成したのですが・・・ 初期作成されたヘッダファイル(Form1.h)にいろいろとコードがかかれていました! 昔(VC6)時代が最後だったので少しびっくりしたのですが、 cppファイルに書いていたような内容がhファイルにあるので?となり質問しました。 質問内容 1..NETになってからは、hファイルにイベントやコンストラクタなどの処理は記述するものなのでしょうか? 2.新規関数を作成する場合はどうするの? 3.VC++ 2010を勉強するにあたって、参考になる『本』『サイト』はありますでしょうか? よろしくお願いいたします。

  • VisualStudioのプロジェクトリソースファイル削除

    VisualStudio2005で開発をしています。言語はVB2005です。 現在、Windowsフォームに配置したボタンに画像を貼りつける作業をしています。 必要な画像を作成し、プロジェクトリソースファイルにインポートしました。 不要な画像ファイルを見つけたので、ソリューションエクスプローラ上から画像ファイルを削除しました。 しかし、プロジェクトリソースファイルの一覧からは消えませんでした。 削除したはずのファイル名を選択しすると、リソースの選択画面が終了してしまいます。 プロジェクトリソースファイル一覧上から削除したはずのファイル名を削除したいのですが、どのようにすれば削除できるのでしょうか?

  • 複数のCのみファイルをリンクし一本の実行ファイルまたはDLLを作成する方法

    いつもお世話になっています。 現在、それぞれCのみで作成したファイルをリンクし、ひとつのDLLファイルまたはEXEファイルを作成したいのです。 作成方法はWin98,MS-VisualStudio6.0です。 今まで調べたやりかたでWin32Dynamic・・・ で「シンボルをエクスポートする」で行った場合、 DLLmainが「CPP」になってしまいました。 DLLmainをCで作成したい場合は、やはり空の「シンボルを作成する」にしなければいけないのでしょうか? 網羅する場合はプロトタイプ宣言を外部ヘッダファイルに記述するのでしょうか? そのサンプルと言うか、詳しく掲載しているサイトがあったら教えてください。 初心者なので、MSDNの説明だと理解に苦しみます。