関数の隠れた副作用を点検する
収録 2026-11-02
純粋関数に見えて、状態を変えたりリクエストを送っていたりします。
関数(メソッド)を渡します。1)副作用をすべて指摘(状態書き込み・ネットワーク・ファイル・グローバル設定の読み取り・引数変更);2)呼び出し側が期待するものと隠れたものの区別;3)並行実行やリトライで問題になるもの;4)純計算と副作用の分割案と影響範囲;5)副作用でテストが不安定になりやすい箇所。関数全体の書き直しはしない。
当サイトオリジナル
中国語の原文
使い方
隐藏副作用是并发问题的常见源头。
こう変えてみる
- コードを書く前に要件と制約を復唱させる。
- 全体書き換えではなく、最小の変更とロールバック方法を出させる。
得られる成果物
- そのまま使える最小変更(コピー可能なコード)
- 影響範囲:変更ファイルと追従が必要な呼び出し元
よくある失敗
- 一度に十ファイル変更させ、何が原因か分からなくなる。
- エラーだけ貼ってコードとバージョンを省くと、使えない修正が返る。
出力のチェック
- 変更は動いて戻せて、無関係なコードに手を入れていない。
- 境界条件(空・巨大・同時実行)が説明かテストで押さえられている。
使いどころと注意
- 向いている用途:要件と制約を復唱させてから、最小限の動く変更を出させる。
- 注意:エラーにはバージョンと最小再現を添える。無いと一見もっともらしいが合わない修正が返る。