In reply to @leorize "but I'd suggest learning": Nah. I wasted a significant part of a day because we didn't realise a default value was being returned. We got lucky: the right person was given the right lines of code after much digging, and the consequence was "a new feature we're putting together gets delayed a bit" It's perfectly within the realm of reason that instead of that, it would have done a super subtle change that creates a security vulnerability. A language construct that materially adds to the risk that one of the most insidious classes of bugs is present in your code base cannot be considered a feature. I realise this is a statement of opinion, but I don't believe it's one of those opinions that should be considered controversial, or difficult to defend.