プログラミングにおける不変について

概要

プログラミングでは、変数の不変という概念が存在する。
これは変数が初期に定められた値以外は代入することが出来ないというものである。

存在する理由

不変という概念が存在する理由は、おおよそ三つの理由に分けることができる。

安全性

変数やオブジェクトが意図していない場所で変更されるなど、予測可能なふるまいを行うこと出来なくなる。このとき、オブジェクトが不変であると、意図しない場所での変更が無くなり、事前にどのようなふるまいを行うかが予測することができる。それにより、意図しないバグも減ることが期待できる。

パフォーマンス

不変なデータやオブジェクトは、言語機能やフレームワークによる最適化やキャッシュの恩恵を受けることができる。また、余分なコピーなども避けることができる。
constについて

メンテナンス

不変性が保たれている場合、特定のオブジェクトの状態変化が限定されるため、バグの追跡やデバッグが容易になる。また、コードが予測可能な振る舞いを示すため、メンテナンスも容易になる。

コード

JavaScriptで以下にコード例を示す。

const name = rerurate; //不変

他にもKotlinだと以下のようになる。

val name = rerurate //不変
var name = rerurate_514 //可変

Rustでは可変であることを定義しない限り最初から不変である。

let name = rerurate; //不変
let mut name = rerurate_514; //可変