Featured image of post AIのレビューを2回通ったのに、ログインボーナスが二重に配られた。書いた理由を渡さずに頼む【敵対的レビュー】

AIのレビューを2回通ったのに、ログインボーナスが二重に配られた。書いた理由を渡さずに頼む【敵対的レビュー】

AI のレビューを同じ会話とサブエージェントで2回通したのに、ログインボーナスが二重に配られた。書いた側の言い分を渡さず、差分と仕様だけでレビューを頼む依頼の組み立て(敵対的レビュー)を TypeScript と node --test で書きます。

Featured image of post 公式ドキュメントを渡したのに、AIが存在しない関数を書いた。インストール済みの依存から資料を作る【最新ドキュメントを渡す】

公式ドキュメントを渡したのに、AIが存在しない関数を書いた。インストール済みの依存から資料を作る【最新ドキュメントを渡す】

公式サイトのドキュメントを貼って AI に書かせたら、入っている版に無い関数でビルドが30か所落ちた。インストール済みの依存から名前と版を取り出し、AI に渡す資料を作る方法(最新ドキュメントを渡す)を TypeScript と node --test で書きます。

Featured image of post AIがテストの答えを書き換え、全部通ったまま請求が倍に。差分で見つける【テスト先行と改変の検知】

AIがテストの答えを書き換え、全部通ったまま請求が倍に。差分で見つける【テスト先行と改変の検知】

AI に保管料の計算の改修を任せたら、テストの期待値がバグの出力に書き換えられ、チェックは全部緑のまま請求が倍になった。テストを先に固め、その後の差分からテストの削除と期待値の書き換えを見つける仕掛け(テスト先行と改変の検知)を TypeScript と node --test で書きます。

Featured image of post キャンセルされた注文が工場への指示に残り、要らない部品を300個作った。AIに先に質問させて仕様書を書く【仕様インタビュー】

キャンセルされた注文が工場への指示に残り、要らない部品を300個作った。AIに先に質問させて仕様書を書く【仕様インタビュー】

キャンセルされた注文が工場への作業指示に残り、要らない部品を300個作った。AI に先に質問させて仕様書を書かせ、要件ごとに受け入れテストがあるかを確かめる関数(仕様インタビュー)を TypeScript と node --test で書きます。

Featured image of post 差し替えた部品が月末だけ落ちる。Perl でインタフェースを書き、can で確かめる【Extract Interface】

差し替えた部品が月末だけ落ちる。Perl でインタフェースを書き、can で確かめる【Extract Interface】

通知先を別の部品に替えたら、日次処理は通るのに月末処理だけがメソッド不足で止まった。使う側が呼ぶメソッド名の一覧を1か所に書き、can で本物と替えの両方を確かめる――インタフェースの抽出(Extract Interface)を素の Perl で書きます。

連載 コード大工 (第11話 / 全12話)
Featured image of post 数百行の関数の「途中だけ」をテストしたい。関数をクラスへ移して段ごとに割る【Break Out Method Object】

数百行の関数の「途中だけ」をテストしたい。関数をクラスへ移して段ごとに割る【Break Out Method Object】

数百行の決算処理は途中の値がすべて関数の中に閉じていて、3段目だけを確かめられない。関数をクラスへ移し、局所変数をフィールドにする――メソッドオブジェクトの抽出(Break Out Method Object)を、呼び方も戻り値も変えずに行います。

連載 コード大工 (第10話 / 全12話)
Featured image of post 関数名を揃えたらモックが効かなくなった。テストは緑のまま本物が動く罠【Introduce Instance Delegator】

関数名を揃えたらモックが効かなくなった。テストは緑のまま本物が動く罠【Introduce Instance Delegator】

関数名を揃えたら、テストは緑のまま、差し替えたはずの印字処理が本物のまま動いていた。名前で縛った差し替えは名前が変わると効かなくなる。インスタンス委譲の導入(Introduce Instance Delegator)で、差し替えを渡すオブジェクトで決める形にします。

連載 コード大工 (第9話 / 全12話)
Featured image of post コンストラクタが本番の帳簿ファイルを開いてしまうクラスを、テストできる形にする【Parameterize Constructor】

コンストラクタが本番の帳簿ファイルを開いてしまうクラスを、テストできる形にする【Parameterize Constructor】

組み立てた途端に本番の帳簿ファイルを開いてしまうクラスは、そのままではテストできない。コンストラクタのパラメータ化(Parameterize Constructor)で、依存を外から渡しても渡さなくても動く形にします。

連載 コード大工 (第8話 / 全12話)