機能追加を任せる
追加は「足す」であって「作り直す」ではない
機能追加を頼むと、AI が関数まるごと書き直してくることがあります。新しい要求を満たすには、そのほうが楽だからです。しかし呼び出し側から見ると、いままで動いていた呼び方が急に通らなくなります。
そこで指示に一言足します。
プレーンテキスト
いまの呼び出し方は変えないでください。既存の動作を壊さないことは、追加そのものと同じくらい重要な要件です。 要件なので、書かないと守られません。
引数を足すときは既定値を付ける
おこづかい帳の集計に「カテゴリで絞り込む」機能を足すとします。素直に引数を1つ足すと、こうなります。
Python
def total_by_category(records, category):
...これだと、いままでの total_by_category(records) という呼び方がエラーになります。既定値を付ければ両方が生きます。
Python
def total_by_category(records, category=None):
...category を渡さなければいままで通り全部を集計し、渡したときだけ絞り込む。これが後方互換を保つ足し方です。指示にも「引数には既定値を付けて、渡さないときはいままでと同じ動きにしてください」と書きます。
追加するものは1つに絞る
プレーンテキスト
悪い 絞り込みと並び替えと出力形式の変更をお願いします
良い まず絞り込みだけ足してください3つ同時に頼むと、差分が大きくなってレビューできません。どれか1つが期待と違ったとき、どこまで戻せばいいのかも分からなくなります。1回の依頼で足す機能は1つにしてください。
追加前の動作を先に確かめる
頼む前に、いまの呼び方でどう動くかを一度実行して控えておきます。追加のあとに同じ呼び方をして、同じ結果が返れば壊れていないと言えます。
この「前の結果を控えておく」は地味ですが、機能追加でいちばん効きます。記憶に頼ると「たぶん前もこうだった気がする」で見逃します。
今回の演習
前回直した total_by_category に、カテゴリで絞り込む機能を足します。既定値を付けて、いままでの呼び方を壊さないようにしてください。
完成条件
- 触ってよいのは kakeibo.py だけです
- 既存の呼び方 total_by_category(records) は壊さないでください
- total_by_category 関数の戻り値で採点します