やっぱり仕様漏れあった!

実際にテストしてみて始めて気づいた。

「条件が満たされたらループを抜ける」これについては良く書けていてちゃんと実装されていた。だがしかし「条件が満たされなかった時は」ってのを書いていなかった。

"普通"に考えたら「ループ続行」なんですが、そんな普通は仕様を理解している人だけの普通だったようです。条件分岐には必ず真偽を対で書く!って思ってたのに、自分の中じゃあまりにあたりまえだったからって漏らしてました。

じゃぁそんな設計者の押し売り普通がどんな風に実装されたのかというと…他の処理で使ってる「一定時間待機した後、次のループへ」というのがコーディングされていました。ここでは待機しちゃいけないのだ…。つまり待機してはいけないという仕様が漏れていた。

これが勝手に実装されてしまうって奴です。プログラマがどうするんだろう?と思っても質問する前に自己解決するという。それが正しければいいのですが、間違ってると勝手な実装が組み込まれるわけです。それをできるだけ排除するために正しい仕様書を書こうとするわけですが、むっずかしいねー!

完璧な仕様書はできない。かならず伝わらない事はある。だから少しでも疑問に思ったら質問して欲しい。これを定着させるためにはどうすればいいかなー。いいね、また考えて実践する課題が出てきた。