こんにちは!
ナビゲータのEVEです。
Yahooクローニングシステムを作るために、EVEシステムで使用するPHPクラスの製造を引き続き行っています。
ここ数日作っていてちょっと失敗したかなとか思う所があり、手戻り等が発生しています。
[EVEシステムで利用するクラス]
EVEシステムで利用するクラスの作りなのですが、基本以下の様な感じになっています。
@操作対象の主となる変数は、クラス作成時にクラスに引数として渡し、オブジェクトを作成する。
A引数として受け取った操作対象の主となる変数のプロパティ情報を取得し、プライベート変数として保持する。
Bその操作対象の主となる変数をメソッドを使用して操作する場合、操作で使用する引数はメソッド実行時にオブジェクトへ引き渡す。
Cメソッドで操作した結果の全ては、オブジェクト内のプライベート変数として保持する。
こんな感じでしょうか?
[後悔している点]
後悔している点は、オブジェクト作成時に、操作対象の主となる変数を特定してしまっていること・・・。作成したオブジェクトの再利用ができない・・・。操作したい変数が増えるたびに、クラスからオブジェクトを作らなければならない・・・。
操作対象の主となる変数を特定している理由は、クラスとしての機能を明確にしたかったから・・・。まだ、本格的に製造していないので、想像の域はでないのですが、操作対象の主となる変数を特定していないと後で見た場合何をしているのか、明確に分からなくなる可能性を感じたから・・・。変数、変数毎にオブジェクトを割り振っておけば分かりやすくなると思いませんか・・・?違うかな・・・?
二つ目は、このようなロジックにした場合、外部からクラスを利用するのは分かりやすく利用しやすいのですが、同一クラス内のメソッド同士がその機能を相互利用したいと言った場合、使いづらいということ・・・。これは、オブジェクト作成時に、原本保持用の変数と編集用の変数と分ける事により問題は解決しましたが、意外と手戻りが大きかったです。
三つ目は、文字クラスなら文字変数しか引数として渡す予定はなかったのですが、いざ作ってみると、配列を渡したいケースなどが出てきたこと・・・。
これについては、機能と後日修正する場合のわかりやすさ、そしてPrototype EVEでの利用状況を考え、配列を引数として引き渡せるようにしましたが、その影響で複雑なプログラムになりつつあります。
[あとがき]
はじめてのオブジェクト指向言語での開発と言うことで、いろいろと悩みながらプログラミングしていますが、このまま当初のコンセプトでYahooクローニング製造完了まで突っ走りたいと思います。ただ、もしYahooクローニングシステムを製造してみて、使えないという判断があった場合、作り直す予定です。
それを考えるとやはり利用するクラスの範囲内でクラスを製造した方が良いようです。ただ、作り直しやすいように現行のクラスは製造する予定です。やっぱり、初めてって難しい!
では、また!
【このカテゴリーの最新記事】