- PR -

ループ数だけ変数を生成

投稿者投稿内容
soesoe
会議室デビュー日: 2003/10/27
投稿数: 8
投稿日時: 2004-01-08 10:22
引用:

もう少し、詳しく要件や制約を書いていただければ、
HELPしやすいと思います。


皆様ご意見ありがとうございます。
現在の状況が少し特殊(?)なので要件、制約を追記させていただきます。

まずオリジナルのフレームワークが存在し、システム自体は稼動中のものです。
そして前任者が組んだ画面1、画面2-1があります。
この画面2-1は1からの遷移用画面で、渡された変数を元に検索&表示のみの画面です。
そして私が新たに画面2-2を作成しようと思います。
内容は画面2-1とほぼ変わりません。(検索テーブルが違うだけ
ただし、

***画面1のロジックに手を加えることは出来ません。   ***
***変数は画面1、画面2-1で既に使われている、     ***
***String $UKU_01〜$UKU_05を使わなければ成りません ***
***当然外部BEANを作ったりは無理です。         ***

上からの「既に動いている部分は触れるな」とのお達しから、
上記の変数を使わざるを得ません。
悩みの種はこんなことを言いながら、この変数が数十個に膨れ上がる可能性があることです。

といったことからループでスッキリならないかなぁと・・・
最初に書いたような感じでループ中でリストや配列を用いずに、ループ数をそのまま変数名へ動的に指定すること自体は出来るのでしょうか?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-01-08 10:35
unibon です。こんにちわ。

そんなフレームワークでちゃんと動くのかが不思議なのですが、以下、それは考えないことにして書きます。

引用:

Anthyhimeさんの書き込み (2004-01-08 07:56) より:
リフレクション(Class#getField())を利用すればいけますよ(激しくお勧めしませんが)。


私もこれが良いと思います(同じくお勧めしませんが)。
ただ、前提としては、

引用:

soesoeさんの書き込み (2004-01-08 10:22) より:
***変数は画面1、画面2-1で既に使われている、     ***
***String $UKU_01〜$UKU_05を使わなければ成りません ***


の変数はフィールド変数である必要がありますが、それは大丈夫でしょうか。
と、いろいろ思っていたのですが、現在、
引用:

soesoeさんの書き込み (2004-01-07 18:47) より:
現在は下記の様に

for(int i=0; i<uku_list.size(); i++){
 if(i==0){ $UKU_01 = uku_list(i); }
 if(i==1){ $UKU_02 = uku_list(i); }
 if(i==2){ $UKU_03 = uku_list(i); }
 if(i==3){ $UKU_04 = uku_list(i); }
 if(i==4){ $UKU_05 = uku_list(i); }
}

こんな感じで馬鹿正直に書いてあります。
でももし変数が30個とかあったら・・・30行書くのは賢くないなぁと思ったのです(あり得る環境です)
それでループ中で変数名の指定にループ数が使えれば?と思ったしだいです。


で動いているのならば、これが一番良いのでは、と思えてきました(30行書けば良い)。
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2004-01-08 10:50
引用:

***画面1のロジックに手を加えることは出来ません。   ***
***変数は画面1、画面2-1で既に使われている、     ***
***String $UKU_01〜$UKU_05を使わなければ成りません ***
***当然外部BEANを作ったりは無理です。         ***


とありますが、

引用:

悩みの種はこんなことを言いながら、この変数が数十個に膨れ上がる可能性があることです。


ということで、変数が数十個に膨れ上がっても画面1のロジックに手を加えない、というのがよく
分かりません。この5個の変数というのは、画面1で使っているものですよね?画面1で使っている
変数が増えるのなら、当然画面1のロジックには手を入れるんですよね?

なんか、根本的に設計が間違ってる気がする、、、

一度、画面1から全体的に設計を見直されたらどうでしょうか?
上記で指摘したような矛盾点もありますので、「画面1に手を入れないのは無理」と
上司を説得したらどうでしょう。

動いているものに手を加えたくない、という心理は分かります。私も開発やりますから。
でも、間違った設計の上に更に実装を加えることは、デスマーチの始まりになりますよ。


[ メッセージ編集済み 編集者: おばけ 編集日時 2004-01-08 10:52 ]

スキルアップ/キャリアアップ(JOB@IT)