人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP5で開発をするときに、拡張性を高くためにはどのようなことに気をつければいいのでしょうか。
機能を増やそうとすると、どうしてもフラグを立ててif文やswitch文の連打になってしまいます。

●質問者: takets
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:switch フラグ 拡張
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● ヨネちゃん
●50ポイント

PHPに限ったことではないのですが、function() を使ってサブルーチンを沢山作り、if や switch からはサブルーチンを呼び出すだけにするという方法が一般的かと思います。

http://www.shigeweb.jp/php/project_p/?section=first&page=fun...

if や switch を沢山使うのは仕方ないと思います。次期の拡張に備え、常にソースを見やすくすることが得策なのではないかと思います。

◎質問者からの返答

ありがとうございました。

ソースのメンテナンス性の重視にも気をつけたいと思います。


2 ● typista
●50ポイント

やや難しいかもしれませんが、オブジェクト指向で設計し、実装することです。

http://www.atmarkit.co.jp/flinux/special/php5/php5b.html

◎質問者からの返答

ありがとうございます。

できれば、オブジェクト指向で設計するときの注意点があれば聞きたかったです。


3 ● ymlab
●50ポイント

http://www.thinkit.co.jp/free/marugoto/1/5/1/

URLはPHP5のXML関係の記事です。

今日の自分のコードは明日の他人のコードという言葉があるように、

コードを美しく設計するのはもちろんのことですが、

ログを出力する関数を作成しておき、

すべてのファイルにincludeしておけばよいのではないでしょうか。

また、これは私の趣味の範囲なのですが、インタフェースと、DBアクセスのファイルは分けておき、一発でDBアクセスに関するディレクトリはここ!と分かりやすくしておくことです。


ちなみに私はPHP5でもあまりオブジェクト設計していません。

PHP4の時にデストラクタがない等えらい苦労をさせられたので。

なんというか、もう一息頑張って欲しいのですよ。

◎質問者からの返答

ありがとうございます。

ログ出力は参考になりました。

設計も重要ですが、原因究明を楽にする方法も合わせて用意しておくのは安心で良いですね。


4 ● m-nisi
●50ポイント

オブジェクト指向でやるか、サブルーチンでやるかは

個人の好みの問題だと私は思います。

どちらでやるにしろ、小さい処理や機能ごとに分割しておく事で

コードの使いまわしも出来るようになります。

あと、ifやswitchが多くなるの必然です。

それなりに大きい物を作ろうと思うとそうなってしまいます。

上の人も書いてある通り、ソースを見やすく書くのもいいと思います。

例えば、インデントをきちんとするとか

適切にコメントを付けるとか

変数名を自分なりの規則で統一するとか。

ダミーURL

http://q.hatena.ne.jp/

◎質問者からの返答

ありがとうございます。

if文の多さは必然なのですか。よく世にあるオブジェクト指向の本ではif文とかを蛇蝎の如く嫌っているんじゃないかと思えるような場面に出くわすことが多いので、新鮮でした。

読みやすいソースのルールを整備するのも、結果として拡張しやすいように造る道の一つではありそうなので、コーディング規約を考えてみます。


5 ● たーちゃん
●50ポイント ベストアンサー

WebプログラマはRailsに乗るべきか?

http://www.atmarkit.co.jp/fjava/column/andoh/andoh29.html

どの言語で開発するかに関わらず、規約を決めて自動的にハンドリングできるように設計することです。

URLを http://host/app/command と決めてcommand 名でファンクションを呼び出すようにすれば機能を増やす時も分岐命令を増やす必要はなくなります。

◎質問者からの返答

ありがとうございます。

ruby on rails、DBの関連づけがすごいですね。

自分には出来そうもないと考えていたんですが、本当に拡張性をどうにかしたいと考えるなら避けて通れないような気がしました。

少し気になったのは、command名でファンクションを呼び出すというところです。

確かにそれだけに絞れば分岐はなくなりますが、本当に単機能に絞らないと実現できなさそうで、どのようにしてcommand名を特定するのかが気になります。

例.

1のとき /app/command1

2のとき /app/command2

(区別するために分岐が必要?)

結局、command名を呼び出す部分には分岐が入ってしまいそうですが……。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ