三元条件结果的方法
Method on result of ternary condition
在三元条件后使用方法是不良样式吗?沿着:
的线(node->parent()->left() == node ? node->parent()->left()
: node->parent()->right()).reset();
我知道代码样式可能是主观的,但我仍然希望我能得到一些建议,好像要使用它或写下:
if (node–>parent()–>left() == node) {
node->parent()->left().reset()
} else {
node–>parent()->right().reset()
}
(来自评论)关于:
auto& childUnq = node->parent()->left() == node ? node->parent()->left()
: node->parent()->right();
childUnq.reset();
我强烈建议另一种选择:
auto& left = node->parent()->left();
auto& right = node->parent()->right();
auto& pick = (left==node) ? left : right;
pick.reset();
通过介绍简单的名称,很明显发生了什么。三元运营商本身并不糟糕,但是挑战是仅在简单的上下文中使用它。
我会说这确实是不好的样式。
以这种方式考虑一下,如果您在别人的代码中发现,您乍看之下可能无法说出它的作用。您肯定需要一些时间才能意识到Reset()函数首先存在,并且会影响条件的两个分支!
即使对您来说,它也可能导致您在调试时一些不必要的问题。
尽管三元操作员可以整洁地使用简单的东西,但要过度使用它,但不仅对您来说,还可以使您的代码非常困难阅读,甚至对他人而言。如果您在别人的代码中找到它,您是否愿意看到它?
if(node->parent()->left() == node){
node->parent_->left_.reset();
} else {
node->parent_->right_.reset();
}
,请保持尽可能清洁和清除!每个人都会感谢您!
相关文章:
- 如何防止方法的调用方将结果存储在C++中
- 常量方法中 decltype 的结果
- 在查看多种方法以在编码时达到相同结果时该考虑
- OpenCL - 内核方法返回意外结果
- 为什么在类构造函数方法中,std::string 参数在调试时显示不同的结果?
- 在数组内迭代,使用类似的方法,但得到不同的结果
- 检查乘法矩阵结果的方法?
- 在WINDBG中调用C 方法实例并打印结果
- 三元条件结果的方法
- 在QT列表中存储DB的查询结果的更好方法
- 如何在我的子类控件paint方法中在默认的paint结果之上绘制一些东西
- 使用两种不同的方法遍历 Vector 的结果不一致
- 接受任意数量的回调并存储结果的 C++ 类方法
- 将特定结果集从Oracle数据库复制到C 中的SQLite数据库的最佳方法
- 特征:评估A*s*a_transpose并将结果存储在对称矩阵中的最佳方法
- 如何通过可行的方法汇总浮点阵列并获得精确的结果
- 将std::stack.pop()方法的结果存储到一个变量中
- 有没有比生成/累积更快的方法来计算函数结果的平均值
- 使用不同方法的排列函数的运行速度会导致意外结果
- 使用 c++11 线程返回结果的正确方法是什么