パースする話

| コメント(0) | トラックバック(0)
kyousoさんのところでreverse関数を使うとかそういう話がありましたが、基本的にあれくらい扱う変数の量が多くなる場合は基本的にデータオブジェクトを作っちゃいます。
改行コードごとに1行1行読み込んでsplitをホワイトスペースで行う。

あとは、格納するオブジェクトを作成するだけです。
Cのような書き方もアリですが基本的に自分はオブジェクト指向的書き方しか思いつかないので、「自分の使えない組み込み関数」とへりくだってみました。

アスペクト指向もアリですが、自分の場合、基本的には全てperlでクラスを作っちゃいます。
RBO::Player::Fielderのようなクラス。

コンストラクタの中身的には
my $p = new RBO::Player::Fielder;
$p->{run} = $args{run};

呼び出すときは
my $f = new RBO::Plyaer::Fielder;
my $run = $f->get_run;

選手の格納は
my $t = new RBO::Team;
$t->add($f);

的なカンジで
1 lineごとのデータについては1つ1つ空白で区切って格納します。
時間があれば頻繁に使用するメソッドも用意します。
例えば、$obj[18]とかあってもプログラム見ただけじゃ意味がまったくわからない。20以上序列を作成するようなコーディングは何番目が何ってコード書いてる最中にわからなくなるので、やらないです。
ただ、時間の都合で100個くらい連続したif文書いたりする的なのは全然アリ。

データオブジェクトを作成した方が、最終的に可視性の高いプログラムになりますし、データオブジェクトで容易にに使いまわせるスクリプトを作れます。RBO::Teamのようなクラスを作ったら色々使いまわせそうでしょ?
ただ、イニシャルコストが高いと言うか最初にデータオブジェクトを書くのが気力の壁になりそうです。

自分はシンプルな組み込み関数のみを使用して残りはCPANにあるクラスを使用します。エレガントだし速いでしょ?

トラックバック(0)

トラックバックURL: http://rbo.bob777.net/mt/mt-tb.cgi/423

コメントする

最近のブログ記事

獲得外国人一覧
RBOの外国人獲得のシステムがガラッと変…
引退時期
昨年あたりから、近年の柏GPの大エース宇…
409年の成長
潜伏期なのに球団日誌を久しぶりに書きます…