• ベストアンサー

ソースファイルの分け方について

新規登録処理するWebを作るには、 入力フォームと入力後の結果を表示する(これ具体的になんて言うのかなぁ)2つを 必要とすると思いますが、その2つの処理は別々のファイルに書いた方がいいのか それとも1つのファイルで「mode=entry_form」のような変数を使って 場合わけして纏めた方がいいのでしょうか? 新規登録だけじゃなく、もっと大きなプログラムの場合に 最適なソースファイルの分け方の規則のようなものはあるのでしょうか?

  • PHP
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。エンジニアやってます。 んと…「入力画面->完了画面」の場合、私なら4つのクラスに分けます。 ・anyから入力画面を表示するクラス ・入力画面からの入力をチェックして以下のいずれかに振り分けるクラス  -エラーがあるので、入力画面をもう一度表示するクラス(エラー表示込み)  -問題ないので登録処理をして完了画面を表示するクラス ただ、この分け方は、MVCと呼ばれる概念と、action chanin(私のフレームワークですと再帰call)という実装があれば、になるのですが。 個人的には、ある程度ファイル数を数作って、各ファイル(== クラス)の処理をシンプルにする方が、メンテナンスは楽だと考えています。 わからないところなどあったら質問いただければ、可能な限り返信いたします。

takagoo100
質問者

お礼

ご返答ありがとうございます。 >個人的には、ある程度ファイル数を数作って、 >各ファイル(== クラス)の処理をシンプルにする方が、 >メンテナンスは楽だと考えています。 これでなんとなくですが方向性は分かりました。参考にしてみたいと思います。 1つ質問があるのですが、自分はクラスというものをほとんど理解してないのでとんちんかんな質問ですけど、 galludaさんの4つに分ける例だと、 4つのファイルにそれぞれ一つクラスが入っていますよね? そのクラスのオブジェクトはどこで作って使うのでしょうか?(どのファイルで使うのでしょうか?) それとこの新規登録だけに限れば、 クラスを使うこと最大のメリットはなにになるのでしょうか?

その他の回答 (2)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がるです。 んと…MVCは、後は http://www.m-fr.net/PESEF/on_the_way/ で、MVCではないところからMVCまでの進む過程が書いてあるので、あるいは参考になるかもしれません。 > >・入力画面からの入力をチェックして以下のいずれかに振り分けるクラス > というやつで、新規登録だけでなく、例えば、カートに商品を追加する処理があった場合 > このModel(class)にその場合の処理も追加するのか、それとも別にファイル(class)を > 用意して(shinki_checkクラス、cart_checkクラス)別々に記述するのでしょうか? 別々のクラスを用意して、ですね。 > もし追加する場合、そのModelの中で何かを基準として場合わけすると思うのですが、 > その部分がどのような処理になるのかが知りたいです。 大雑把にかくと「画面毎」で、正しくは「機能毎」になります。 とはいえ…この辺はいろいろな流儀があるのですが(苦笑 クラスは小さめに作ってこつこつ直すのが楽かなぁと個人的には思います。 以上何かの参考にでもなれば & また質問があったらお気軽に ^^

takagoo100
質問者

お礼

ご返答ありがとうございます。 MVCの使い方についていろいろ調べてたのですが 自分の頭ではまだ時間がかかりそうなので、 ここでは一旦締め切りたいと思います。 ただMVCの存在と細かく分けていくという方向性を知ることができたので とても為になりました。ありがとうございます。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がるです。 > galludaさんの4つに分ける例だと、 > 4つのファイルにそれぞれ一つクラスが入っていますよね? > そのクラスのオブジェクトはどこで作って使うのでしょうか?(どのファイルで使うのでしょうか?) うい。多分質問されると思ってました(笑 んと…MVC、という概念を使うです。 簡単に書くと。 書いているそれぞれの4つのclassは、M(Model)に当たる部分で。 実際にこのクラスを使ってくれるのは、C(Controller)にあたる部分が勝手に呼び出してくれます。 で…このMVCという概念ですが。…そうですねぇ。 http://www.hyuki.com/yukiwiki/wiki.cgi?MVC http://ja.wikipedia.org/wiki/Model_View_Controller http://www.stackasterisk.jp/tech/php/phpMvc01_01.jsp http://www.jac-net.com/~tarzan/smalltalkers/mvc/mvc.html あたりを読んでみていただけると。 大雑把に書くと、フレームワークってのを使うと、大抵出てくる概念になります。 > それとこの新規登録だけに限れば、 > クラスを使うこと最大のメリットはなにになるのでしょうか? 「新規登録だけに限れば」というわけでもないのですが。 業務で作る場合、特に「保守/メンテナンス/仕様変更」がまま起きるのですが。 そういった際に「きちんと作られたクラス設計に基づく」のであれば、クラスで組んだほうが、修正が楽になります。 逆に、個人で一回作りきりだと、クラスで作る意味合いは大分下がるかもしれません。 なれてると「手早く作れる」のが利点ではあるのですが…これはなれるまで得られない利点なので(苦笑 以上何かの参考にでもなれば幸いです。

takagoo100
質問者

お礼

ご返答ありがとうございます。 自分なりにMVCについて理解しようとしたのですが、 なんとなくは理解できたのですが、、、たぶん・・・ >・入力画面からの入力をチェックして以下のいずれかに振り分けるクラス というやつで、新規登録だけでなく、例えば、カートに商品を追加する処理があった場合 このModel(class)にその場合の処理も追加するのか、それとも別にファイル(class)を 用意して(shinki_checkクラス、cart_checkクラス)別々に記述するのでしょうか? もし追加する場合、そのModelの中で何かを基準として場合わけすると思うのですが、 その部分がどのような処理になるのかが知りたいです。 本題とずれてきて申し訳ないのですが、もう少しよろしくお願いします。

関連するQ&A

  • iniファイルへの追記について

    FORM上の保存ボタンをクリックしたら、フォームに入力したデータがiniファイルへ追記していくというものを作りたいのですがわかりかねています。 フォームのソースで作っていこうとしていて、 ソースの始めは public sub Command保存_Click() で始まり、End sub で終りますよね? そこで フォーム上の値、例えば、3 を変数 a_col に格納します。ここまではできます。 この格納したものをiniファイルと同じものをあらわす名前のini_colに格納し、iniファイルに ini_col=3と表示したいのです。 iniファイルから、フォームへ取り込むところまではなんとかできました。 初心者ですのでアドバイスおねがいします。

  • ヘッダファイルとソースファイルについて

    今までは、Webプログラミングを行っていたのですが、 最近になって、C++の仕事を請け負いましたので、 C++を勉強しつつ、プログラムをしていたのですが、 Webプログラムとの違いに悩んでいる部分があります。 それは、ヘッダファイルとソースファイルの関係についてです。 ほかのファイルから、インクルードされたヘッダファイルが、 読み込まれるというのは納得がいくのですが、 そのヘッダファイルに関連付け(?)られたソースファイルも、 一緒に読み込まれるという理由がわかりません。 ヘッダファイルでソースファイルを読んでいるような記述もないような感じなので、とても疑問に思っております。 なぜ、ヘッダファイルをインクルードしただけで、付属のソースファイルも読み込まれるのでしょうか?

  • 「ソースファイルが見つかりません」と出てしまう

    Delphi6で、 http://pastebin.com/TqHzHgXT ↑にあるプログラム(Bmpファイル、Jpegファイルの指定した座標のTColor値を取得、RGBに分解して表示する)を、 1. Form1にボタン2個を配置。(Button1、Button2) 2. Memoを配置。(Memo1)縦に長めにしておくか、ScrollBarsプロパティをssVerticalに設定。 3. Button1をダブルクリック。(イベントが登録され、イベントハンドラ雛型が自動生成される) 4. 同様にButton2もダブルクリック。 5. ソースをコピーして、Delphiのエディタ画面に貼り付け。内容をすべて置き換えるようにする。 の手順で行いましたが、コンパイル時 「ソースファイルが見つかりません:classes.pas」 というエラーメッセージが出てきてしまいます。 (ソースファイルへのパスは「classes.pas」です。) その画面を閉じると、 「プロジェクト1.exeが EFOpenErrorクラス の例外を生成しました。ファイル C:\~\Test/bmp は開けません」 と出ます。(2回) これはどのように解決すれば良いでしょうか? Delphiも勉強しながらやっている段階で知識が不足しているので、ソースプログラムや参考URLをそのまま載せていただけると嬉しいです。 方法をご存知の方いましたら、是非知恵を貸してください!m(_ _)m

  • htmlソースの中にコメントタグ(<!-- -->)があった時のPHP

    htmlソースの中にコメントタグ(<!-- -->)があった時のPHPの処理で困ってます。 入力フォームからHTMLソースを入力し、DBに登録するという処理をやってます。 <!-- <p>ソース</p> -->の場合は良いのですが、 <!-- <p>ソース</p> <p>ソース</p>--> など、入力ミスでコメントタグが正しく入力されていない場合、 コメントタグそのものを置換してなくしてしまおうと思っています。 そこで、肝心の <!-- <p>ソース</p> -->の場合:タグは消さない <!-- <p>ソース</p>の場合:<!--タグを消す <p>ソース</p>-->の場合:-->タグを消す の分岐がどうやれば良いのか思いつきません。 どなたかご教授いただけますでしょうか。

    • 締切済み
    • PHP
  • FORMを使ってperlでファイルへ書き込み

    現在、FORMから入力されたデータをファイルに書き込むスクリプトを作っていて、大方ちゃんと動いているのでが、 FORMの<INPUT TYPE="text"....で入力されたデータで スペースが空いた部分から先がファイルに書き込まれないのです。 例えば、"OK WEB"と入力すると"OK"としか書き込まれないのです。スクリプトの中では、FORMから入力された変数を 一度ブラウザに出力していて、それにはきちんと表示されるのです。ですが、その後にファイルに書き込まれたデータを見ると、前半のスペースの前までの部分しか書き込まれていないのです。 これは私の書いたスクリプト上の問題でしょうか? それともこのように処理してしまう特性でもあるんでしょうか? まだ、CGI初心者なので、ひょっとしたらバカな質問かもしれませんが宜しく御願いします。

    • 締切済み
    • CGI
  • RPGでプログラムからソースファイルに復元したい

    最近、RPGプログラムを使う事になったので、 プログラムの処理内容を見たいのですが、 コンパイルした後のプログラムファイルしかなく、 ソースファイルがない状態です。 プログラムファイルから、ソースの中身を見る方法がもしあれば、教えて頂きたいです。 よろしくお願いします。

  • 【VB2005】txtファイルからINIファイルみたいに読込む

    googleや、ITプロのサイトなどで VB2005のINIファイルもしくはXmlの読書きが理解できずに、 とりあえず、txtファイルから設定の読込みをしたいと考えてます。 ↓Text.txt↓の内容 [Mode] Mode=1 [SYSTEM] Menu1=登録処理 Menu2=保存処理 ・各、=(イコール)のあとの値を変数に代入したいと思ってます。  状況と、したいことが伝わりにくいかも知れませんが  ご口授お願いします。

  • Form_Load と Form_Activate のタイミング

    あるデータ入力アプリを作っています。 親フォーム(Form0)で番号を決め、子フォーム(Form1,Form2,Form3,Form4) でデータ入力し、それぞれの子フォームを出るとき(Unload Me) に、変数にsaveしています。それを親フォーム(Form0)で登録を選択したとき、入力データをチェックしてDBに格納しています。 すでにDB格納済のデータの場合、親フォームでDBから変数に読み込み、子フォームのForm_Loadで展開しています。 そこで困っているのは、親と子のフォームを行き来するときにデータの表示で前のが残っていたり、消えてしまったりします。 Form_LoadとForm_Activateを通過するタイミングが、ちゃんと理解できていないためコードの記述位置が不適切なのだと思います。 Form_Load と Form_Activate の実行タイミングについて、お教えください。

  • フォームプログラムでのファイル分割

    先日よりお世話になっています。VC++フォームプログラムのスコープに関する質問です。 フォームプログラムではデザイナモードでGUIで作成したデザインや割り込み、プロパティなどが、自動的にソースとして全てForm1.hに作成されます。さらに自分で処理を追加していくわけですが、Form1.hが膨大になってしまうこともあり、デザインに関する部分以外を別のファイルanother.cppで書きたいのですがうまくいきません。どうか知恵をお貸しください。 まず、現在のForm1.hの構成は、 --Form1.h----------------------------------------------------- namespace namForm1{ class Form1{ private: void func(); //プロトタイプ ・・・・・・・・ } ・・・・・ } void namForm1::Form1::func(){・・・} //関数定義 --------------------------------------------------------------- のようになっており、ここでフォームプログラムの処理が全て記載され、実質のメインともいえるような作りになっています。 ですが、Form1.hのコード量が増えて見辛くなることを嫌って、Form1.hで書いてある関数func()などを内容をanother.cppに出したいのです。another.cppからnamForm1の名前空間を使おうとしても、当然「識別子がクラス名でも名前空間名でもありません。」怒られますし、another.cppにForm1.hをインクルードしてもやはり、「識別子がクラス名でも名前空間名でもありません。」となります。このプログラムをスマートにファイル分割する方法を教えてください。お願いします。

  • VC++2005であるヘッダファイルを複数のソースから読み込みたいのですが…

    毎度お世話になっています。 現在VC++2005でUSBカメラ画像の処理プログラムを作成しているのですが、 現在こちらのEWCLIBというライブラリを利用しています。 http://www.geocities.jp/in_subaru/ewclib/ このライブラリを 一つのソースファイルからから呼び出した場合問題無いのですが、 複数のソースファイルから呼び出した場合error LINK2005 既に~で定義されています… といったエラーが出てしまいます。 複数のソースファイルからこのライブラリを利用したい場合どのようにすればいいでしょうか? このライブラリは #define EWC_BRIGHTNESS 0 … int ewc_init=0; … int ewc_ncam; … int EWC_GetImage(int num, void *buffer){ … } と単一のヘッダファイルに変数や関数の定義を行っているのですが、 複数のソースファイルからこのライブラリを利用したい場合、やはりヘッダとソースに分割する必要があるのでしょうか? 参考になるページや解決方法等、お伺いしたいです。

専門家に質問してみよう