我經常使用公共當你在檢索值的表達式上進行分支時,是否有像if(Value * value = getValue())這樣的成語?
if (Value * value = getValue())
{
// do something with value
}
else
{
// handle lack of value
}
現在,我還經常做
QString error = someFunctionReturningAnErrorString(arg);
if (!error.isEmpty())
{
// handle the error
}
// empty error means: no error
這就是罰款,但我想error
變量的作用域到if
- 塊。有沒有一個很好的成語呢?顯然,我可以將整個部分包裹在另一個塊中。
顯然,這不工作:
if(QString error = someFunctionReturningAnErrorString(arg), !error.isEmpty())
{
// handle the error
}
// empty error means: no error
而且不幸的是(但有充分理由)的QString
不能轉換爲bool,所以這不起作用或者:
if(QString error = someFunctionReturningAnErrorString(arg))
{
// handle the error
}
// empty error means: no error
任何建議?
我已經改變了我的編碼準則,以便賦值語句永遠不會出現在條件表達式中。這是爲了避免在if語句中輸入「==」與「=」的問題。我讓編譯器負責臨時變量。 –
您是否需要在錯誤處理中使用錯誤變量?你可以用'if(!someFunctionReturningAnErrorString(arg).isEmpty())'代替。 –
不要不必要地縮短你的代碼,只需要一些中間變量,使得閱讀和調試代碼更容易。 (換句話說:您的編碼風格混淆) –