Good topic. I actually made a change to replace all these functions with properties like
Cartesian3.UNIT_X = new Cartesian3(…);
I decided to revert it for fear that a user would change the property, and, therefore, break code everywhere. I discussed with Kevin and Scott. We were somewhat on the fence.
I don’t think users will directly modify these properties, but I could see a function taking a Cartesian3 modify them not knowing that the argument is constant by convention. Recently, Kristian changed all public-facing Cesium functions to treat Cartesian3 and similar types as if there were immutable, so the fear of accidentally changing these properties is less; however, a user could still do so in their own code.
Given Kristian’s recent changes, and that I’ve used similar psuedo-constants elsewhere, e.g., BlendingState.ALPHA_BLEND, I am OK with this change if others, cough Scott cough, are on board. Matt, are you up for contributing it?