这是一个秘密:我不打扰学习优先规则.它们太容易出错了,它让下一个看待代码的人思考得太多了.换句话说:假设维护你的代码的人是一个挥舞着斧头的心理学家,他知道你住在哪里.他们也很好.
所以而不是:
x = a + b * c / d;
Run Code Online (Sandbox Code Playgroud)
我会用:
x = a + ((b * c) / d);
Run Code Online (Sandbox Code Playgroud)
或者更好(主观),将其分解为单独的语句或许,更棘手的问题是在"聪明"的代码行中发生的事情,这些代码行在后面的行中对表达式有副作用:
x = Func(z) * a[i++] + i; // where Func(z) somehow mutates i
// (or even worse when using "conditional" etc)
Run Code Online (Sandbox Code Playgroud)
应该谨慎使用这些东西,你应该尝试知道什么行为被定义,什么是明确未定义但是工作(或失败)取决于你使用的编译器.