A philosophical rule/caution

This commit is contained in:
Bjarne Stroustrup
2018-10-13 10:55:06 -04:00
parent 0f61a4be4e
commit 1103509895

View File

@@ -314,6 +314,12 @@ The rules are not value-neutral.
They are meant to make code simpler and more correct/safer than most existing C++ code, without loss of performance. They are meant to make code simpler and more correct/safer than most existing C++ code, without loss of performance.
They are meant to inhibit perfectly valid C++ code that correlates with errors, spurious complexity, and poor performance. They are meant to inhibit perfectly valid C++ code that correlates with errors, spurious complexity, and poor performance.
The rules are not precise to the point where a person (or machine) can follow them blindly.
The enforcement parts try to be that, but we would rather leave a rule or a definition a bit vague
and open to interpretation than to specify something precisely and wrong.
Sometimes, precision comes only with time and experience.
Design is not (yet) a form of Math.
The rules are not perfect. The rules are not perfect.
A rule can do harm by prohibiting something that is useful in a given situation. A rule can do harm by prohibiting something that is useful in a given situation.
A rule can do harm by failing to prohibit something that enables a serious error in a given situation. A rule can do harm by failing to prohibit something that enables a serious error in a given situation.