The recent 2023 version of MISRA C costs just a few pound as PDF. So I got it from $WORK.
I don't have a lot of experience with the previous versions. But the 2023 version reads quite okay.
It is not possible to mandate "though shall write good code" because it is not at all clear what that means.
Instead they needed to come up with rules that can be checked with automated tools.
The rules are classified as mandatory, required or advisory.
Only the mandatory rules cannot be overridden by explicit documentation.
As an example, "The goto statement SHOULD not be used" is an advisory rule.
Given the bad bad spaghetti code that beginner programmers produce with goto, this is quite reasonable.
Even though some code is definitely better with goto. For example to jump to some cleanup before returning.
Similarly, "A function SHOULD have a single point of exit at the end" is an advisory rule only.
The rationale for the rule stated in the standard is the following (slightly rephrased):
1. A single point of exit for a function is required by the IEC 61508 and ISO 26262 standards as part of the requirements for a modular approach.
2. Early returns may lead to the unintentional omission of function termination code.
3. If a function has exit points interspersed with statements that produce persistent side effects, it is not easy to determine which side effects will occur when the function is executed.
I'm also a big advocate for early return. But the points from the rationale are valid.
And I don't have a good alternative rule that achieves the same goal and is checkable with automated tools...