まさるblog

越後在住子持ちプログラマー奮闘記 - Author:まさる(高野 将、TAKANO Sho)

目次

Blog 利用状況

ニュース

著書

2010/7発売


Web掲載記事

@IT

.NET開発を始めるVB6プログラマーが知るべき9のこと

CodeZine

実例で学ぶASP.NET Webフォーム業務アプリケーション開発のポイント

第1回 3層データバインドを正しく活用しよう(前編)

ブログパーツ


書庫

日記カテゴリ

コミュニティ

電卓祭~その2~

前回は数字を入力するところまで作りました。今回は計算するところを作ります。

 

が、とりあえず最初に終了ボタンを追加してみました。(仕様の4番)

Calclator2

 

そしたら本題。

 

まずは前回と同じように、計算する際の状態を考え状態遷移図を描きました。

CalcState

これをStateパターンで実装します。前回の数値入力とは別にStateを作成しました。

で、2時間ほどかかって、ようやく一応計算ができるようになりました。

 

が、しかし、コードがとってもスパゲッティ化してますorz

その理由は、

  • 前回の数値入力と今回の計算の2種類の状態を別々に管理している。
  • 機能の分割が上手くできていない。(各Stateクラスと画面の役割分担がめちゃめちゃ。)
  • 重複コードが多い。

といったところ。

 

次はここまでのソースをちょっと整理(リファクタリング)してみようと思います。

 

#ここまでのソースWankumaCalculator_070709.zip

投稿日時 : 2007年7月10日 0:35

Feedback

# re: 電卓祭~その2~ 2007/07/10 0:49 επιστημη

う、美しい...僕、もうイッちゃいそぉです。

# re: 電卓祭~その2~ 2007/07/10 1:09 まさる

中身も美しくなるようがんばりやす^^;

# re: 電卓祭~その2~ 2007/07/10 13:01 通り*

今回は、なかなか頭にイメージが入ってきませんでした...
前回のが私の許容範囲いっぱいだったみたいw
CalclateStateとInputStateが同じベースクラスなことに少し違和感を感じたりもしました。
ところで"1="ってした後に"2"を入力すると"12"になるけど私は"2"になって欲しかったので、BeforeCalculateStateに次のを書き足しました。
これであってます?
public override void PushEqual()
{
  this._calculatorForm.InputState =
    new ZeroState(this._calculatorForm);
}
それと"1+2+3="ができなかったので直すぞ~って思って1時間格闘しましたが、私には無理でした...
#不具合の遠回しな報告とかじゃなくて、勝手に開発に参加してる気になってますw

# re: 電卓祭~その2~ 2007/07/11 7:48 まさる

そーですねぇ・・・はっきり言って中はメタメタなもんで^^;

>これであってます?
多分あってます。

>"1+2+3="ができなかったので
あれ?できてたはずなのにできなくなってる・・・
だめじゃんorz

>#不具合の遠回しな報告とかじゃなくて、勝手に開発に参加してる気になってますw
そうやって楽しんでいただけるなら、載せた甲斐があったってもんです^^

# 電卓祭~その3~ 2007/07/12 23:48 まさるblog

電卓祭~その3~

タイトル
名前
Url
コメント