If then構文、効率的な仕分けモデルを描く
- (2011-11-30 05:29:55)
vbaで条件分岐する際、if then構文は必須。よく使うのに分岐条件が複雑になると、自分の場合、混乱してくる。
複雑な条件分岐
きょう書いた条件文はこれ。配送方法と決済方法によってプレゼント対象になるかどうかのチェックプログラム:
第1条件のパラメータ(配送方法):
・宅急便
・コレクト
・メール便
・メール便送達
第2条件のパラメータ(支払い方法):
・カード決済
・銀行振込
・コンビニ決済
・代引き
第3条件のパラメータ(プレゼント希望の有無):
・希望
・不要
第1条件それぞれに対して第2条件・第3条件が分岐するので、理論的には32種類の条件がある。
elseifを使い、ベタにすべての条件式を書く
単純には「32種類の条件文」を書く。きょうは32種類で済んだので、まだ書けないことはないが、やがて首が回らなくなるモデル。
・3種類のパラメータは条件組み合わせは「And」でつなぐ。
・if thenは平階層で、elseifでつなげていく。
if thenの入れ子で、階層化する
プレゼント不要の方は何のチェックも必要ないので、第1階層に「プレゼント有無」を当てることで、条件分岐は16種類に減る。
支払い方法と配送方法は同じ結果になるものをグループ化するとそれぞれ3種類と2種類。3x2=6種類の条件分岐となる。
これらもif thenの入れ子で多重に階層化すると現実的なプログラムになった。
効率的な仕分けモデルを頭の中で描けるか
if thenの使い方というより、その前に複雑な条件をいかにグループ分けして、わかりやすい階層化を頭の中で作るかが今日の反省。
簡単で単純な分岐、たとえばYES/NOの条件で全体に影響を及ぼす(今日のプログラムではプレゼント有無)大きなパラメータの分岐から階層化していくことが原則か。
最後のElseを忘れない
自分のような未熟なプログラムマがよくやる失敗はElseifでつないできた条件文の最後で「Else」を落とさないこと。
常に記述された条件に合わない「何か」がプログラムには起こるリスクがある。
プログラムから見れば「想定外の条件」となる。想定外の条件が来たときの挙動を決めておかないと大事なところでビジネスが破綻する。
「想定外の条件」をコードに落とすクセが自分にはまだ身についていない。
<< 製品版ソフトの見分け方、権威あるサイトの紹介も疑おう< | >携帯電話へHTMLメールを送るテスト >>