参照透過性と副作用

難しそうなんだけど参照透過性とか当たり前のようで実はそんなことなかったりする。
多分大多数の関数は参照透過性を満たしていない
関数でも疎結合を意識していれば自然と副作用も減るし参照透過性も強まるのではないだろうか?

参照透過性

関数が同じ入力値に対して常に同じ出力を返すこと。
参照透過性があれば並列処理や関数の呼び出し順序の変更が容易になる。
またデバックが簡単になるためテスト稼働が減ると思われる。
参照透過性の必要条件として副作用がないことが挙げられる。

副作用

関数が値を返す意外の全ての作用。
ファイルのオープンや変数の代入など。