ウェブプログラミングで使えるデザインパターン
1nobodyさん
03/11/22 06:56ID:Lh+gL3bz ゲッチューポン
46nobodyさん
03/11/29 22:56ID:??? >>44
実運用で使うようなモジュールはだいたい限られてるし、
そういうモジュールはよくメンテされてて
実用的で使えるのは結構あると思うけど。
ライブラリからリファクタリングしないと
重かったりして困るようなパフォーマンス命な
仕事なんてやったこと無いので
そういう時に使うべきかどうかというのは
判断が必要かもしれないけど
実運用で使うようなモジュールはだいたい限られてるし、
そういうモジュールはよくメンテされてて
実用的で使えるのは結構あると思うけど。
ライブラリからリファクタリングしないと
重かったりして困るようなパフォーマンス命な
仕事なんてやったこと無いので
そういう時に使うべきかどうかというのは
判断が必要かもしれないけど
47nobodyさん
03/11/29 23:21ID:??? >>46
だな。
なんらかのライブラリ群や、フレームワークを使ったとき、
ハード資源消費量は、無駄な機能の占める割合が高かったりするもんな。
それでも、漏れらは使うのさ。
信頼性のあるライブラリだし、開発コストが下がるから。
客から動作がにぶくなってきたって、言われたら、
「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
宇摩ー。
だな。
なんらかのライブラリ群や、フレームワークを使ったとき、
ハード資源消費量は、無駄な機能の占める割合が高かったりするもんな。
それでも、漏れらは使うのさ。
信頼性のあるライブラリだし、開発コストが下がるから。
客から動作がにぶくなってきたって、言われたら、
「分散しましょう!サバ増やしましょう!お任せ下さい!」ってな感じで対応。
宇摩ー。
49nobodyさん
03/11/30 00:32ID:Fs/0s5IP >>31よりもっと使えるやつカモン
実際modeで分離なんて簡単にはいかない
実際modeで分離なんて簡単にはいかない
5046
03/11/30 00:35ID:???52nobodyさん
03/11/30 00:57ID:???55nobodyさん
03/11/30 01:49ID:ENFs/Hl757nobodyさん
03/11/30 02:35ID:ENFs/Hl760nobodyさん
03/11/30 10:01ID:??? 最近WebProg飽きたからやってないけど、昔はこんな感じに組んでたよ。
勝手にSDM-VCモデルとか呼んでたけど。
後から調べたら似たような思想の設計法とかやたらとあってちょっと欝。
S:ストレージ
ファイルとかDBとかを同じメソッドでアクセスできるようにするためのラッパクラス。
三層スキーマの内部スキーマ相当でODBCとかと似たような概念。
ここをモジュール化することで次回から使い回しが可能。
D:データ
ストレージに保存するエンティティ(データ)クラス。
同概念スキーマ相当。JDBC的な考え方。
Sを差し替えるだけで様々な媒体に永続化が可能なため移植が楽に。
M:モデル
言うまでもなく、MVCのM。
ビューに依存しないロジックを提供する。
VC:ビュー&コントローラ
リストボックスとか汎用的な部品だとVとCの分離には激しく意味があると思うが
オーダ特化のVはむしろCと一緒に管理した方が便利という判断でいっしょこたんに。
マンマシンインターフェースを担当する。
勝手にSDM-VCモデルとか呼んでたけど。
後から調べたら似たような思想の設計法とかやたらとあってちょっと欝。
S:ストレージ
ファイルとかDBとかを同じメソッドでアクセスできるようにするためのラッパクラス。
三層スキーマの内部スキーマ相当でODBCとかと似たような概念。
ここをモジュール化することで次回から使い回しが可能。
D:データ
ストレージに保存するエンティティ(データ)クラス。
同概念スキーマ相当。JDBC的な考え方。
Sを差し替えるだけで様々な媒体に永続化が可能なため移植が楽に。
M:モデル
言うまでもなく、MVCのM。
ビューに依存しないロジックを提供する。
VC:ビュー&コントローラ
リストボックスとか汎用的な部品だとVとCの分離には激しく意味があると思うが
オーダ特化のVはむしろCと一緒に管理した方が便利という判断でいっしょこたんに。
マンマシンインターフェースを担当する。
61nobodyさん
03/11/30 12:35ID:??? >>60 おれもそういう経験あるよ。
有名なモデリングパターンや、デザインパターンを知らかったとき、
もっと効率良く開発したいと心掛けながら、設計していたら、
結局有名なパターンと同じ方法で設計してた。
有名なモデリングパターンや、デザインパターンを知らかったとき、
もっと効率良く開発したいと心掛けながら、設計していたら、
結局有名なパターンと同じ方法で設計してた。
63nobodyさん
03/12/01 02:53ID:i/vnv4B8 >61
質問いいかな?
MVCとかってパターンランゲージの用語で言う「パターン」に含まれるの?
モデリング・パターンのパターンとか?MVCにもパターンの様なもの
(どういった時にMVCで設計するといい。とか)の記述がある?
自分のデザインパターンに対する認識が他の人とは違ってるよーな気がしてきた。
「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
質問いいかな?
MVCとかってパターンランゲージの用語で言う「パターン」に含まれるの?
モデリング・パターンのパターンとか?MVCにもパターンの様なもの
(どういった時にMVCで設計するといい。とか)の記述がある?
自分のデザインパターンに対する認識が他の人とは違ってるよーな気がしてきた。
「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
65nobodyさん
03/12/01 10:49ID:???66nobodyさん
03/12/01 11:09ID:??? 無駄が多いんだけならいいんだよ。その分汎用性が高くなってるわけだし。
でもダサいコードが多いじゃん。あれなら Perl で CPAN の方が(゚Д゚)ウマー
でもダサいコードが多いじゃん。あれなら Perl で CPAN の方が(゚Д゚)ウマー
67nobodyさん
03/12/01 13:06ID:??? >「パターン」のコンテキストやフォース(どういった時にそのパターンを適応するといい。
>等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
それは、多くの経験の集約から「このパターンはこのケースに使える」というのが出てくるのであって、
今は「こういうパターンがあるんじゃね?」って段階だろ。このスレ的には
>等といったパターンの目的や背景やその制約)の部分が抜けてる様な気がするんだけど。
それは、多くの経験の集約から「このパターンはこのケースに使える」というのが出てくるのであって、
今は「こういうパターンがあるんじゃね?」って段階だろ。このスレ的には
68nobodyさん
03/12/01 19:00ID:???72nobodyさん
03/12/02 06:46ID:??? リファクタリングって再利用しやすいようにメソッド名を適切に書き換えたりするくらいじゃないの?
ロジックを変更すればそれに影響するすべての部分に再試験が必要になるわけで
それって非常に効率が悪いわけで。
それをやらずにごにょごにょ言ってるなら非常に危険なソフトウェアがちまたにあふれることになるかと。
ロジックを変更すればそれに影響するすべての部分に再試験が必要になるわけで
それって非常に効率が悪いわけで。
それをやらずにごにょごにょ言ってるなら非常に危険なソフトウェアがちまたにあふれることになるかと。
73nobodyさん
03/12/02 08:27ID:1mz3fQJ8 >67
パターンランゲージってそういった経験を文書化するものじゃなかったっけ?
>PHP/DesignPattern
horde の人とかデザインパターンを結構意識して使っている様だよ。
PEARだったらLog関連のクラスがGoF適用例として参考になると思う。
パターンランゲージってそういった経験を文書化するものじゃなかったっけ?
>PHP/DesignPattern
horde の人とかデザインパターンを結構意識して使っている様だよ。
PEARだったらLog関連のクラスがGoF適用例として参考になると思う。
74nobodyさん
03/12/02 10:58ID:??? PEAR みたいなダサいもん、参考にすんなよ。
76nobodyさん
03/12/02 14:00ID:c/j/bWHB デザインパターンて何?
79nobodyさん
03/12/02 19:32ID:/3byaW6X デザイン≒設計
81nobodyさん
03/12/02 21:34ID:??? デザインパターン≒下絵
?→?→?
↓ ↑ ↑
?→?←?
?→?→?
↓ ↑ ↑
?→?←?
82nobodyさん
03/12/04 14:10ID:???83nobodyさん
03/12/05 00:56ID:??? おすすめの書籍を教えてよ。
リファクタリング+デザインパターンもの?
リファクタリング+デザインパターンもの?
84nobodyさん
03/12/05 22:40ID:???Java言語で学ぶデザインパターン入門
85nobodyさん
03/12/21 01:33ID:hM57n5k9 昔Observerを使ったMVCを知って、
『こりゃいいや!』ってWebプログラムで使おうとして
かえってごちゃごちゃになった。
『こりゃいいや!』ってWebプログラムで使おうとして
かえってごちゃごちゃになった。
86nobodyさん
03/12/21 01:36ID:hM57n5k9 あ、本題書き忘れた。
Compositeパターンはツリー型掲示板なんかにうってつけじゃないの?
Compositeパターンはツリー型掲示板なんかにうってつけじゃないの?
8885
03/12/21 13:13ID:??? >>87
ん?……あ、そうか。
スレッド(トピック?)の下にスレッドがあるような再起構造じゃないや。
でも、子記事を持つものをComposite、持たないものをLeafと見立てて
使えないかな?
それとも俺何か勘違いしてるかな?
ん?……あ、そうか。
スレッド(トピック?)の下にスレッドがあるような再起構造じゃないや。
でも、子記事を持つものをComposite、持たないものをLeafと見立てて
使えないかな?
それとも俺何か勘違いしてるかな?
89nobodyさん
03/12/21 15:35ID:??? >>87
木構造を表現するのに適切なデザインパターンだと思うけど?> Composite pattern
>>79,81
パターン言語には、その(solution)解法を適用する場合のコンテキスト
(背景・解決する問題の状況)や、force(制約・制限)等が書かれているはず。
更に言えば、具体的な事例や、そのパターンを適用した際に起こる副作用とかトレードオフ等、
こういった一連の状況を指してパターンと呼んでいるんじゃなかった?
solutionの部分だけを指してパターンと呼んでいる人が多い様に見受けられる。
FAQにもパターンという表現は誤解を招きやすい言葉だったって書かれているけどね。
だからと言って誤解されたままでは有益な議論は出来ないよ。
一言で説明するのは難しいかも知れないけど、設計と言い切ってしまうのはどうかな?と思う。
デザインパターン => オブジェクト指向での設計上の問題に対する解決策とそれに関する知見。
>>85
かえってごちゃごちゃになったのなら、どうしてそうなったのか考えてみよう?何か原因あるはずだよね?
ここで、パターン使ってこうなったからパターンは使えない、なんて短絡的な発想はせずに。
どうすれば、その問題をスマートに解決出来るんだろうと考えてみる。
例えば、Observerパターンで知られている問題点は、
Subjectが複数になった場合に保守や拡張が困難になる、その場合はSubjectに中間層を設けるなど。
パターンの説明には必ず関連するパターンへの参照や、例外/制限事項等が書かれているはずです。
クラス図だけ見真似てデザインパターンを使ったつもりに浸っていると、
パターン使った=>更に悪化 という*パターン(繰返しの意味で)*に陥りやすいです。
木構造を表現するのに適切なデザインパターンだと思うけど?> Composite pattern
>>79,81
パターン言語には、その(solution)解法を適用する場合のコンテキスト
(背景・解決する問題の状況)や、force(制約・制限)等が書かれているはず。
更に言えば、具体的な事例や、そのパターンを適用した際に起こる副作用とかトレードオフ等、
こういった一連の状況を指してパターンと呼んでいるんじゃなかった?
solutionの部分だけを指してパターンと呼んでいる人が多い様に見受けられる。
FAQにもパターンという表現は誤解を招きやすい言葉だったって書かれているけどね。
だからと言って誤解されたままでは有益な議論は出来ないよ。
一言で説明するのは難しいかも知れないけど、設計と言い切ってしまうのはどうかな?と思う。
デザインパターン => オブジェクト指向での設計上の問題に対する解決策とそれに関する知見。
>>85
かえってごちゃごちゃになったのなら、どうしてそうなったのか考えてみよう?何か原因あるはずだよね?
ここで、パターン使ってこうなったからパターンは使えない、なんて短絡的な発想はせずに。
どうすれば、その問題をスマートに解決出来るんだろうと考えてみる。
例えば、Observerパターンで知られている問題点は、
Subjectが複数になった場合に保守や拡張が困難になる、その場合はSubjectに中間層を設けるなど。
パターンの説明には必ず関連するパターンへの参照や、例外/制限事項等が書かれているはずです。
クラス図だけ見真似てデザインパターンを使ったつもりに浸っていると、
パターン使った=>更に悪化 という*パターン(繰返しの意味で)*に陥りやすいです。
91nobodyさん
03/12/21 15:55ID:??? 無理。
ジャンプ&フローで要約性がないパターン。
ジャンプ&フローで要約性がないパターン。
9385
03/12/21 17:14ID:???94nobodyさん
03/12/22 01:36ID:??? CGIはGoF的なデザインパターン使って作っても
オブジェクト生成して一回で捨てちゃうもんな
オブジェクト生成して一回で捨てちゃうもんな
96nobodyさん
03/12/22 07:37ID:???97nobodyさん
03/12/23 02:36ID:???99nobodyさん
03/12/26 13:59ID:5BZ0FoxA >>96
ファイル周りで、こういう処理にはこういうパターンがいいよ、みたいのある?
趣味でCGIスクリプト作ってるけど結局ファイル入出力が処理の中心で、
ここをシンプルに書ければだいぶ綺麗になるんだけどなぁ。
ファイル周りで、こういう処理にはこういうパターンがいいよ、みたいのある?
趣味でCGIスクリプト作ってるけど結局ファイル入出力が処理の中心で、
ここをシンプルに書ければだいぶ綺麗になるんだけどなぁ。
101nobodyさん
03/12/26 23:57ID:??? だれか
>ファイルとかDBとかを同じメソッドで
>アクセスできるようにするためのラッパクラス。
これ作ってください。
>ファイルとかDBとかを同じメソッドで
>アクセスできるようにするためのラッパクラス。
これ作ってください。
102ヽ(´ー`)ノ
03/12/27 04:55ID:??? > だれか
> >ファイルとかDBとかを同じメソッドで
> >アクセスできるようにするためのラッパクラス。
> これ作ってください。
Perl の DBI に当たるクラスって Ruby には無いの?
> >ファイルとかDBとかを同じメソッドで
> >アクセスできるようにするためのラッパクラス。
> これ作ってください。
Perl の DBI に当たるクラスって Ruby には無いの?
104nobodyさん
03/12/27 22:23ID:??? Ruby/DBI http://ruby-dbi.sourceforge.net/
105nobodyさん
04/01/03 11:48ID:2WhaiS3p106nobodyさん
04/01/03 14:16ID:/y0BIE8s107nobodyさん
04/01/05 19:45ID:??? PHP、言語として機能が足りてないからデザパタに向いてないよ。
典型的な例が Singleton。
典型的な例が Singleton。
108nobodyさん
04/01/05 20:23ID:???$a = NULL;
function GetSameObject(){
global $a;
if($a == NULL){
$a = new SameObject();
}
return $a;
}
109nobodyさん
04/01/07 09:41ID:??? >>108
だから、そういう小汚いコード書かなきゃイカンから言語として機能が足りてないんだろ。
PHP5 だと static あるから Singleton は書けるようになるが…それでもどうかと思う。
だから、そういう小汚いコード書かなきゃイカンから言語として機能が足りてないんだろ。
PHP5 だと static あるから Singleton は書けるようになるが…それでもどうかと思う。
110nobodyさん
04/01/07 18:00ID:??? >>109
PEAR パッケージでよく使われてますが、 PHP4 でも普通に書けますよ。
class Hoge
{
function &singleton()
{
static $instance;
if (!isset($instance)) {
$instance = new Hoge;
// $instance = HogeHoge::factory;
}
return $instance;
}
$instance = &Hoge::singleton();
PEAR パッケージでよく使われてますが、 PHP4 でも普通に書けますよ。
class Hoge
{
function &singleton()
{
static $instance;
if (!isset($instance)) {
$instance = new Hoge;
// $instance = HogeHoge::factory;
}
return $instance;
}
$instance = &Hoge::singleton();
111107
04/01/08 05:49ID:???113nobodyさん
04/01/08 06:44ID:???114nobodyさん
04/01/08 06:47ID:??? まぁ C はダメ言語だろうな。
116110
04/01/08 09:17ID:??? >>115
できますよ。
言語特性や制限はありますが PHP や Perl では Private メソッドも含めてそういう
ものは書く側が慣習的に守るというだけのことです。 111 さんがいうようなことも
当然ありますけど、だからといってその言語の利点があるわけですから使い分けるの
が良いというだけの話でしょう。
できますよ。
言語特性や制限はありますが PHP や Perl では Private メソッドも含めてそういう
ものは書く側が慣習的に守るというだけのことです。 111 さんがいうようなことも
当然ありますけど、だからといってその言語の利点があるわけですから使い分けるの
が良いというだけの話でしょう。
117nobodyさん
04/01/08 14:14ID:??? そうだなあ、singleton という、
コンストラクタの実装とクラス変数に大きく依存するパターンは、
PHP の言語仕様とインピーダンスミスマッチが大きい、ということは言えそうに思う。
ただ、GoFパターン全部がそういうわけではなく、
むしろ singleton が例外的だとも言える。
つか、そもそも singleton ってウェブプログラミングで使う?
まあ、singleton 以外のパターンも今のところウェブプログラミングでの使い道が
あまり見つかってないようではあるが。
しかし、ぱっとすぐ思いつかないが、
singleton 以外でも PHP が向かないパターンはありそうな感じではある。
>>107 への宿題として、
singleton 以外で PHP が向いていないと思われるパターンを提出せよ。
「ウェブプログラミングで使える」というスレの趣旨を満たすとモアベターだが、
さすがにそこまでは難しいか。
コンストラクタの実装とクラス変数に大きく依存するパターンは、
PHP の言語仕様とインピーダンスミスマッチが大きい、ということは言えそうに思う。
ただ、GoFパターン全部がそういうわけではなく、
むしろ singleton が例外的だとも言える。
つか、そもそも singleton ってウェブプログラミングで使う?
まあ、singleton 以外のパターンも今のところウェブプログラミングでの使い道が
あまり見つかってないようではあるが。
しかし、ぱっとすぐ思いつかないが、
singleton 以外でも PHP が向かないパターンはありそうな感じではある。
>>107 への宿題として、
singleton 以外で PHP が向いていないと思われるパターンを提出せよ。
「ウェブプログラミングで使える」というスレの趣旨を満たすとモアベターだが、
さすがにそこまでは難しいか。
118nobodyさん
04/01/08 20:51ID:???120nobodyさん
04/01/08 23:24ID:??? まぁ、極論すればグローバル変数をラップしただけという代物だ。
気を付けてグローバル変数を使用するのと早々大差はない。
気を付けてグローバル変数を使用するのと早々大差はない。
121nobodyさん
04/01/09 07:36ID:??? ,イ │
// |:!
//,. -/r‐- 、| !
/,/ ./ | _」 ト、
/.\`/ |二...-┘ ヽ
. i ,.>、;/ー- 、 l
! ∠.._;'____\ |
,!イ く二>,.、 <二>`\.、ヽ.
/'´レ--‐'ノ. `ー---- 、 |\ ヽ、
\ `l (!" Jfヽ! `''-;ゝ 大佐ではない
`‐、jヽ ヾニニ> ゙イ" }_,,. ‐''´
`´\ ー / ,ィ_}
. |_ `ー ''´ _」'
, ー‐-‐‐‐--''.‐''゛,,;,,...: ゛''-、、,;,,
,ィ'゛ ゛゛""' ゛"'''-、
/ ヽ
/ '、
l l
. l i. l
l :i. ヽ.:.:...:.:: "'
. l .:l ヽ.:.::... "''、
. l. .:l ヽ.:..:. `'、
l ::l: ';.:.:..... ヽ
l .:l.:.. .:ィ.):.:. l.:.:.: .:.ヽ、
. l .:l..: ''ー.: .:.:l.:.:..:..:: .:i'゛
// |:!
//,. -/r‐- 、| !
/,/ ./ | _」 ト、
/.\`/ |二...-┘ ヽ
. i ,.>、;/ー- 、 l
! ∠.._;'____\ |
,!イ く二>,.、 <二>`\.、ヽ.
/'´レ--‐'ノ. `ー---- 、 |\ ヽ、
\ `l (!" Jfヽ! `''-;ゝ 大佐ではない
`‐、jヽ ヾニニ> ゙イ" }_,,. ‐''´
`´\ ー / ,ィ_}
. |_ `ー ''´ _」'
, ー‐-‐‐‐--''.‐''゛,,;,,...: ゛''-、、,;,,
,ィ'゛ ゛゛""' ゛"'''-、
/ ヽ
/ '、
l l
. l i. l
l :i. ヽ.:.:...:.:: "'
. l .:l ヽ.:.::... "''、
. l. .:l ヽ.:..:. `'、
l ::l: ';.:.:..... ヽ
l .:l.:.. .:ィ.):.:. l.:.:.: .:.ヽ、
. l .:l..: ''ー.: .:.:l.:.:..:..:: .:i'゛
122nobodyさん
04/01/09 10:45ID:??? >>118
フレームワーク内で使われるのはわかるが
DBのコネクションプールはそうやってフレームワークが管理してくれるはずだから
ユーザがコード書く段階では気にしなくていいぢゃん。
Perl ですら mod_perl + Apache::DBI 使えばいいし。
と思ったが、よくよく考えてみたら、PHP にはコネクションプールが無いのか。
それは確かに問題だな。
フレームワーク内で使われるのはわかるが
DBのコネクションプールはそうやってフレームワークが管理してくれるはずだから
ユーザがコード書く段階では気にしなくていいぢゃん。
Perl ですら mod_perl + Apache::DBI 使えばいいし。
と思ったが、よくよく考えてみたら、PHP にはコネクションプールが無いのか。
それは確かに問題だな。
123110
04/01/09 11:34ID:??? >>122
私の知る限りでは Apache::DBI はコネクションプールをしているわけではな
くて PHP の持続的接続と同等の機能を提供するはずです。
つまり DSN 毎にコネクションを維持するだけ (さらにプロセス毎に) だと理
解していますが。
さらにコネクションプールは SQL Relay 等で実現できますよ。
私の知る限りでは Apache::DBI はコネクションプールをしているわけではな
くて PHP の持続的接続と同等の機能を提供するはずです。
つまり DSN 毎にコネクションを維持するだけ (さらにプロセス毎に) だと理
解していますが。
さらにコネクションプールは SQL Relay 等で実現できますよ。
124nobodyさん
05/01/27 00:47:17ID:??? 一生懸命読んだけど23の中の一個も理解できませんでした
どうしればいいでしょうか。
早くオブジェクト脳になりたいんです!
どうしればいいでしょうか。
早くオブジェクト脳になりたいんです!
126nobodyさん
2005/04/03(日) 21:00:04ID:??? 保守
127nobodyさん
2005/04/24(日) 12:25:02ID:??? PHP5だとデザインパターンも生きてくるのかな?
128nobodyさん
2005/05/02(月) 21:38:03ID:M34Qp7Tn プログラムの改修作業で、既存の動いているクラスを
変更なしに機能を追加したりするときにアダプタっていう
デザインパターンを使うのかな?使い方間違ってる?
変更なしに機能を追加したりするときにアダプタっていう
デザインパターンを使うのかな?使い方間違ってる?
129nobodyさん
2005/05/02(月) 22:18:31ID:???130nobodyさん
2005/05/03(火) 22:22:38ID:??? >>129
実は仕事で既に動いているPHPプログラム改修作業をすることに
なったのですが、
・非常に見づらいソース。開発者は既に退社&ドキュメントは無し。
・納期は短いのでリコーディングすることはできない。
・動作自体には問題はなく、現在正常に稼動中。
・機能拡張もあり。
という状況です。ソースが非常に見づらく保守性が著しく低いのと
機能拡張は大幅な仕様変更になるので、できればリコーディングしたい
ところなのですが、納期も無いことですし、何より現在問題なく
稼動中なのでそれはできません。
そこでなるべく既存のクラスに手を加えずに、機能拡張をしたい
という感じです。
このような場合、既存のクラスを継承させた新しいクラスを作り、
動いている部分は利用しつつ、新規の仕様に合わせた設計に作り変える
というやりかたを考えているのですが、これは別にデザインパターンという
わけではなくて、ただのOOPの継承を使ってるだけということですかね。
ちなみに、上記のような場合皆さんならどのような手法を取りますか?
識者のご意見をお聞かせいただけたらと思います。
実は仕事で既に動いているPHPプログラム改修作業をすることに
なったのですが、
・非常に見づらいソース。開発者は既に退社&ドキュメントは無し。
・納期は短いのでリコーディングすることはできない。
・動作自体には問題はなく、現在正常に稼動中。
・機能拡張もあり。
という状況です。ソースが非常に見づらく保守性が著しく低いのと
機能拡張は大幅な仕様変更になるので、できればリコーディングしたい
ところなのですが、納期も無いことですし、何より現在問題なく
稼動中なのでそれはできません。
そこでなるべく既存のクラスに手を加えずに、機能拡張をしたい
という感じです。
このような場合、既存のクラスを継承させた新しいクラスを作り、
動いている部分は利用しつつ、新規の仕様に合わせた設計に作り変える
というやりかたを考えているのですが、これは別にデザインパターンという
わけではなくて、ただのOOPの継承を使ってるだけということですかね。
ちなみに、上記のような場合皆さんならどのような手法を取りますか?
識者のご意見をお聞かせいただけたらと思います。
131nobodyさん
2005/05/05(木) 23:01:05ID:??? 手法云々以前に、そんなDQNな物を担当させられる事になったら
漏れなら先ず上司に現状を報告し、指示を仰ぐな
1.現状のプログラムが如何に問題点の多い物であるか
2.前任者の無能さを叩き、リコーディングの必要性の訴え
3.リコーディングすれば納期に間に合わせる事は難しい。
しかし前任者のプログラムに手を入れた場合、(極端に保守性が悪いので)変更によって障害が起きる可能性が高く、納期が大幅に遅れる危険がある。
以上を伝えて今後の方針を決め、増援を求めるなり何なり対策を協議して・・
(要は、「責任逃れの道はちゃんと作っておけよ」と)
漏れなら先ず上司に現状を報告し、指示を仰ぐな
1.現状のプログラムが如何に問題点の多い物であるか
2.前任者の無能さを叩き、リコーディングの必要性の訴え
3.リコーディングすれば納期に間に合わせる事は難しい。
しかし前任者のプログラムに手を入れた場合、(極端に保守性が悪いので)変更によって障害が起きる可能性が高く、納期が大幅に遅れる危険がある。
以上を伝えて今後の方針を決め、増援を求めるなり何なり対策を協議して・・
(要は、「責任逃れの道はちゃんと作っておけよ」と)
133nobodyさん
2005/05/28(土) 13:42:10ID:??? 保守
134nobodyさん
2005/06/11(土) 13:52:15ID:??? PHPでデザインパターン使ってる?
135nobodyさん
2005/06/23(木) 01:29:49ID:l0fPbzln136nobodyさん
2005/07/14(木) 05:02:59ID:Dw3R1Zsm 良スレだと思うんだけど
みんなデザインパターンってあまり知らないのか?
みんなデザインパターンってあまり知らないのか?
137nobodyさん
2005/07/14(木) 05:09:10ID:??? ムのスレもそうだけで知ってる人ってほんと書かないね
138nobodyさん
2005/07/14(木) 05:35:55ID:??? このスレはお題があれば再生するんじゃないの。
139nobodyさん
2005/07/14(木) 20:33:00ID:??? 良スレだと思うんだけどな。
140nobodyさん
2005/07/14(木) 21:17:21ID:??? 待ったり進行でいいんジャマイカ?
141nobodyさん
2005/08/09(火) 19:13:09ID:1DO6YyCD まあ、とりあえずJ2EEパターンやPoEAに書かれているパターンは抑えるべきだと思うが。
後者の場合、Webは選択肢の一つに過ぎないけど参考になる。
これらをPHPに適用するとどうなるか考えるのも面白い。
後者の場合、Webは選択肢の一つに過ぎないけど参考になる。
これらをPHPに適用するとどうなるか考えるのも面白い。
142nobodyさん
2005/09/02(金) 22:29:06ID:??? このスレ死んでるのか^^; 既に語り尽くされてしまっているからなぁ。
143nobodyさん
2005/09/08(木) 20:14:04ID:UAazRTeh 全然尽くされてないだろ。
http://www.phparch.com/shop_product.php?itemid=96
とりあえずPHP向けの本が出てるから皆買おう。
そうでなきゃ話しも出来ん。
http://www.phparch.com/shop_product.php?itemid=96
とりあえずPHP向けの本が出てるから皆買おう。
そうでなきゃ話しも出来ん。
144nobodyさん
2005/09/09(金) 01:34:49ID:??? PHP向けのは要らない
レスを投稿する