つくる:レビュー一巡
章の総仕上げ
この章で扱った4つを、1回の依頼の中で全部使います。
プレーンテキスト
読む 意図と入力と副作用を確かめる
試す 端を叩く。空、0、負、極端
書かせる 確かめた項目をテストとして残す
止まる 取り返しのつかない操作の前で手を止めるこの4つは順番に並んでいます。読んで、試して、テストにして、危ない操作を弾く。これが1周まわると、生成コードを実務に入れられる状態になります。
依頼の前に決めておく
今回作るのは、月の予算に対する残額を出す関数です。頼む前に、自分で決めておくことがあります。
プレーンテキスト
入力の形 予算の金額と、支出のリスト
出力の形 残額の整数
使いすぎ 予算を超えたとき、負の数で返すのか 0 で止めるのか
数えない値 支出に数値でないものが混ざったらどうするか3つめと4つめは、決めなければ AI が決めます。予算を超えたときに 0 で止める実装と、マイナスで返す実装は、どちらもありえます。どちらが欲しいかは仕様の話なので、AI には決められません。
依頼のあと
コードが返ってきたら、順に確かめます。
プレーンテキスト
1 支出のリストを書き換えていないか読む
2 空リストを渡して、予算がそのまま返るか試す
3 予算ちょうど使ったときに 0 が返るか試す
4 予算を超えたときの値が、決めたとおりか試す3が境界です。予算3000円で3000円使ったとき、残額は0です。ここが 0 にならない実装は、比較の向きを間違えています。
差し戻しの形も使う
期待どおりでなかったら、前の回の形で返します。入力と期待と実際の3つを揃えます。
プレーンテキスト
remaining_budget(3000, [1000, 2000]) が -0 ではなく 0 を返すはずですが、
実際には 1 が返りました。この形なら1往復で直ります。「おかしいです」だと3往復かかります。
演習
kakeibo.py の remaining_budget を完成させてください。いまは支出をそのまま引いていて、数値でない支出が混ざると落ち、予算を超えたときの扱いも決まっていません。予算超過は負の数のまま返す方針で仕上げてください。数えない値の条件も、超過時の扱いも、必ず指示に書いてください。
完成条件
- 触ってよいのは kakeibo.py だけです
- 数値でない支出は無視し、予算超過は負の数のまま返します
- remaining_budget 関数の戻り値で採点します