On Wednesday, 2 October 2013 at 13:09:34 UTC, Daniel Davidson wrote:
1. If a variable is never mutated, make it const, not immutable.
2. Make the parameter reference to immutable if that is how you will use it anyway. It is fine to ask a favor from the caller.
...

I think guideline 1 should be about "arguments" not "variables". Functions should take const arguments, so they can be called with mutable and immutable values.

I would rephrase the second guideline as: "Never dup or idup an argument to make it mutable or immutable, but require the caller to do this (might be able to avoid it)".

For more guidelines:

3. Return value, which are freshly created, should never be const. They should be mutable or immutable.

Basically, I cannot come up with a case, where const would be preferable to mutable and immutable. Maybe someone is able to find a good example? Of course, this does not hold for returned values, which are retrieved from somewhere (array,container,etc). In this case, I have no general advice.

4. Data structures should not restrict themselves to be mutable, const, or immutable.

This is a noble goal, which in reality is probably either trivial or impossible. So I am not sure, if it is worthy to be called a guideline.

Reply via email to