不変条件
コードの特定の箇所で常に成り立つ性質。ループ不変条件は反復のたびに、クラス不変条件はpublicメソッドの実行後に、データ構造の不変条件は外から観測できるすべての状態で成り立つ。
形式検証や正しさの証明(ホーア論理)の中心にある概念である。Bertrand MeyerのEiffelによる契約による設計(Design by Contract)も、事前条件・事後条件・不変条件を土台にしている。実用面ではassert文が、ドキュメントであり実行時チェックでもある。ReactがはやったころにはJavaScriptのinvariant()ライブラリが開発時専用のアサートとして人気を集めた。RustやTypeScriptのnewtypeパターン(ブランド型)を使えば、不変条件を型チェッカーに強制させることもできる。