TDDで電卓アプリを実装する日記#6

はじめに

オブジェクト指向エクササイズが「常にリファクタリングを要求する事によって設計の質をあげさせる手段」な気がしてきた。

今回の実装範囲

今回実装するToDoリストは下記の通り
・1+1+1…のような連続して数値を入れる機能
・1+*1=1のような、演算子を修正する機能
・ゼロ除算例外の検出

…とは言ったものの、実は上2つは前回のプログラムですでに実装が完了している。必要なのは一番下の機能のみだ。

ゼロ除算の検知機能を追加する

ちょうど前回、四則演算の機能を追加したため、それを拡張する形で実装しよう。SignalWorkクラスに新しく計算前チェックのための関数をもたせるように変更し、計算の直前にエラーを検知したら例外を出すようにした。

この作りにしているポイントは、switch文を一切使っていないということ。MapとBiFunctionで計算動作をカプセル化してしまえば、例えば商のあまりを求める機能のような、新しい演算子を追加しても変更するのはこのSignalItemSetクラスだけでよくなる。

そしてこのクラスの例外は、9桁以上の入力をしようとしたときと同様、「キー入力をした」部分でキャッチできるようにしてある。

作っておいたテストを走らせて、きちんと動くことを確認して作業終了。

https://github.com/mickie895/swing_calc_for_education/blob/dialy_%237_result/TODO_list/calc_todo.md

この時点でのToDoリストは上記の通り。だいぶ減ってきたかな?

この記事が気に入ったらサポートをしてみませんか?