つくる:操作の一巡
4手を1周する
この章で1つずつ扱ってきた操作を、続けて1周します。順番は次のとおりです。
プレーンテキスト
1. 依頼 対象、現状、変更後を書いて頼む
2. 差分 何が消えて何が足されたかを読む
3. 実行 端と例外を含めて動かす
4. 判断 採用するか、差し戻すか、破棄するかこの4手が基本サイクルです。以降の章で扱うことは全部、このサイクルの上に乗ります。順番を飛ばさないことだけを守ってください。
飛ばしたときに何が起きるか
プレーンテキスト
差分を飛ばす 頼んでいない変更に気づかないまま取り込む
実行を飛ばす 読んで納得したコードが、空リストで落ちる
判断を飛ばす 何となく採用して、後で理由を説明できなくなるどれも「今回はたぶん大丈夫」で飛ばせてしまいます。飛ばした回に限って壊れる、というのが厄介なところです。毎回同じ手順を踏むのが結局いちばん速くなります。
依頼に書き切る
1周を1回で終わらせるコツは、依頼の時点で条件を出し切ることです。この章で出てきた要素を並べると次のようになります。
プレーンテキスト
ファイル名と関数名
いまどうなっているか
どう変えたいか
境界の扱い (0を含むか、一致は完全一致か)
該当が無いときの戻り値
変えてはいけないもの (関数名、引数の順)
触ってよいファイルの範囲多く見えますが、書くのは数行です。この数行を惜しんで、差し戻しを2往復する方がずっと時間を使います。
今回つくるもの
おこづかい帳に、カテゴリごとの合計を一度に出す機能を足します。これまでは1カテゴリずつ合計していました。今回は全カテゴリぶんをまとめて返します。
戻り値の形を、依頼の時点で決めておいてください。決めずに頼むと、リストで返ってくるか辞書で返ってくるかが AI 任せになります。
書いたら差分を読み、空の記録でも動くことを確かめてから採用してください。
完成条件
- 触ってよいのは kakeibo.py だけです
- 戻り値は カテゴリ名 をキー、そのカテゴリの合計金額 を値にした辞書にします
- 記録が空のときは空の辞書を返します
- categoryTotals 関数の戻り値で採点します