戻る

オブジェクト指向的開発とデバッグなど
(,,・ω・)<A!スポンジできたか!?
先のオブジェクト指向で立てた例。
ケーキ屋さんでホールケーキを作る作業。
A:( ´∀`)スポンジ担当
B:(,,゚Д゚)生クリーム担当
C:(..´Д`)デコレーション担当
D:( ゚ω゚)箱詰め担当
E:(,,・ω・)管理者
F:( ´▽`)製品チェック担当

Fを置いた時にこんなことがありました。
( ´▽`)<イチゴの数が合いません。
と結果が返ってきたら。
誰がわるいか?デバッグの開始である。
(,,・ω・)<なにぃ?Cは何した
当然役割的にはそのものの担当者に調査は入る。
(..´Д`)<え〜生クリーム塗った後に、イチゴは指定の6個置きましたよ〜。
(,,・ω・)<ほんとか?数えてみぃ
(..´Д`)<1,2,3,4,5,6でほら6個です
(,,・ω・)<確かに。設定値を見ても6だしな。あってる。
だれが失敗こいているのでしょうか。
(,,・ω・)<ところでFよ。どんな数え方をした?
( ´▽`)<ループを回してですね。0,1,2,3,4,5〜でほら。設定値の「6」に足りません。
(#・ω・)<オマエだーー!!
ループカウンタの計測違いはよくある話です。
(;´▽`)<数の数え方を合わせます。
このケースでは新設されたFの初期段階で発見できるミスです。
何か変更したらそのあたりを中心に探索しましょう。

次。
ケーキの仕様変更が入り、砂糖菓子のサンタさんを加える事になりました。
( ´▽`)<イチゴもサンタも生クリームも大丈夫です。
(,,・ω・)<おし出荷!
その後さらに注文がつき、メッセージプレート用のチョコレートを置くスペースの確保する必要がでてきました。
相談相手はもちろんCさんです。
(,,・ω・)<これだけのスペース確保できない?
(..´Д`)<えー。イチゴの均等配置だけでいっぱいいっぱいですよ。
(,,・ω・)<あれ?サンタは?
(..´Д`)<ボクやってません。
(#・ω・)<なにぃ!?
意外な事実の発覚です。
(#・ω・)<サンタは誰が持っているんだ?
(..´Д`)<ボクはもっていませんよ。
作業の流れを考慮した場合、DとFしかいません。
( ゚ω゚)<あたしのところに来た時にはすでに付いていますよ。
(#・ω・)<それならFか!?
( ´▽`)<前回の変更時に、モノはついでってことで、サンタがなかったら足す事になってますよ。
(#・ω・)<オマエだーー!!
(;´▽`)<なんでですの!?モノはついでで行うようにしましたがなんの支障もなく出来ているのにぃ。
(#・ω・)<役割分担違反じゃ!!
Fはチェック担当、Cはデコレーション担当、サンタの飾りつけはデコレーション。
っとなればCが行うのが正しい道です。
辻褄が合っていても、処理自体が全て正しいとは限りません。
この役割を保ち続ける事はOOPではとても重要なことです。
ちなみに結果を変えずに処理を変える。これリファクタリングという用語。
(,,・ω・)<ってことで、チョコレートスペースの相談とともに、サンタ置くのはCがやること。Fはチェックだけしておくように。
(..´Д`)<やること増えてきたらしんどいんですが。
(,,・ω・)<生クリーム塗りとサンタとイチゴ配置にチョコレート配置もか。よし。部下つけていいぞ。
サブクラスの誕生です。
(..´Д`)<いったん全ての必要物資はボクがうけとるので、君たちにそれぞれ渡すから作業してね。
Cの役目が実作業からデコレートのコントローラーになりました。
受け取った生クリームを部下に塗らせ、持ってきたデコレート品を部下に渡し、結果だけもらう役。
(..´Д`)<ってことでデコレーション完成です〜。
役割分担がキッチリ出来ていれば機能が肥大化してもわりと苦もなく吸収できるもの。
サンタをFが「もののついででできるから」っと自分の作業にしていては、サブクラスもFも悩む原因になります。
「サ、サンタはここに置かれるはずだからあけとこう」とか「この座標に置くのよね?」とか。
作業精度は下がるは効率は落ちるわでよい事などないことに繋がります。

仕様変更のためには体制をまずしっかりつくっておくこと。
これ大事です。
コレが出来ればオブジェクト指向開発のメリットを享受していることになるので、心当たりのある方はがんばってください。


CopyRight 2006
(C) BELLCROP
All rights Reserved.