Cashing is a kind of pure function. It doesn't depend on something that could change behind the scenes. There's no side of facts. You can write these functions. I've got an input in an output, and it dosn't depend on any other state. Amd, there's no hidden surprises. And elso i think makes your code more easy to read reason about. M, if your cods can use imutable objects, i think you should favor it.