朝でも夜でも mac でも windows でも商用環境でも日本でもアメリカでも、add(2, 3)は5 透過的 ( transparency ) とは「存在するものを存在しないように見せる」感じらしい 透過の反対は仮想らしい 透過 → あるけど見えないガラス 仮想 → ないけど見えるホログラム つまり「参照透過性」は「参照があるけどないように見せる」ということ 変数の再代入やグローバル変数の参照が処理内になければ、処理内では変数の参照について心配する必要がないので、参照が透過的と言える 冪等性 処理を何回実行しても同じ結果になること 現状を気にせず叩けば良いので、chef やマイクロサービス等のたくさんの状態を更新する処理と相性が良い (一部が失敗しても全てが成功するまで叩き直せば良いから) 身近な例だと「オン | オフ」みたいなトグルボタンは冪等性がないけど「オフにする」ボタンは冪等性
![副作用と参照透過性と冪等性を理解して、テストでドメインを磨く - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/45ac2a44c610bc36c8aea61bb043064ee09c355d/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU1JTg5JUFGJUU0JUJEJTlDJUU3JTk0JUE4JUUzJTgxJUE4JUU1JThGJTgyJUU3JTg1JUE3JUU5JTgwJThGJUU5JTgxJThFJUU2JTgwJUE3JUUzJTgxJUE4JUU1JTg2JUFBJUU3JUFEJTg5JUU2JTgwJUE3JUUzJTgyJTkyJUU3JTkwJTg2JUU4JUE3JUEzJUUzJTgxJTk3JUUzJTgxJUE2JUUzJTgwJTgxJUUzJTgzJTg2JUUzJTgyJUI5JUUzJTgzJTg4JUUzJTgxJUE3JUUzJTgzJTg5JUUzJTgzJUExJUUzJTgyJUE0JUUzJTgzJUIzJUUzJTgyJTkyJUU3JUEzJUE4JUUzJTgxJThGJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz00ZmQwNzlmNzZjMWM2NGMxN2VhZDBhM2EwMjhlNTkxZQ%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBzdXp1a2ktaG9nZSZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YzA3NDRmZDhiMzI3N2JhYmNlNGFjYTc4M2E2MjA4MDM%26blend-x%3D120%26blend-y%3D445%26blend-mode%3Dnormal%26txt64%3DaW4g5qCq5byP5Lya56S-44Of44Op44Kk44OI44OH44K244Kk44Oz%26txt-width%3D972%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%25233A3C3C%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D134%26txt-y%3D546%26s%3D54ff466391dc9276b5632ac20e14dfb2)