我有一个代码性能和可读性上反复功能
void Foo()
{
auto index = currentIndex();
if (index.isValid())
index.doSomething();
}
另一种选择
void Foo()
{
if (currentIndex().isValid())
currentIndex().doSomething();
}
第二个对我来说更具有可读性。但它的表现如何? currentIndex()
在当前流行的编译器中计算两次吗?如果currentIndex()
是一个占用CPU时间的大函数,编译器是否会优化第二个作为第一个?
变量名'index'很清楚.. – Rapptz
'currentIndex()'返回什么?第一个和第二个例子看起来不一样。 –
是的,currentIndex()将在第二个解决方案中调用两次 –