我希望通過我在那裏遇到了以下if
聲明爲`if`聲明
if (!(foo == bar)){
// lots of code here
}
一些舊代碼奇怪的符號是什麼寫這在
if (foo != bar){
}
如果它的優勢相關的,代碼庫是C++。
我希望通過我在那裏遇到了以下if
聲明爲`if`聲明
if (!(foo == bar)){
// lots of code here
}
一些舊代碼奇怪的符號是什麼寫這在
if (foo != bar){
}
如果它的優勢相關的,代碼庫是C++。
它們應該是等價的,對於普通的舊數據類型它們當然是,但如果作者(非傳統地)爲==
提供了重載操作符而不是!=
,那麼寫這個的第二種方法將不可用。
爲了增強可讀性不過,我想我寧願看到
if (foo == bar){
// do nothing
} else {
// lots of code here
}
儘管所有的最清晰的方式是調整代碼庫提供!=
運營商,併爲您採納你的第二個方法寫這個。
一個非常詳細的無所作爲的方式(並不真正提高可讀性) –
我確實將該部分限定爲基於觀點的部分。 '(!(foo == bar))'對我來說看起來像一種「味道」。 – Bathsheba
因爲'!='過載不存在,所以我寧願看'if(!(foo == bar))''。空'如果'塊是我的氣味:) –
類型(模板參數)的要求(概念)可能包括EqualityComparable
,但不包括NotEqualityComparable
(它不存在作爲http://en.cppreference.com/w/cpp/concept中列出的庫概念)。
LessThanComparable的概念是類似的:C++算法不需要比概念更大的(它是多餘的)。
是的。這是關於這樣一個測試的唯一*好的原因(儘管如此,我認爲改變模板的要求以增加InequalityComparable通常是正確的選擇。 –
歡迎來到SO。該語言總是*相關的。這是民間現場如何回答他們的問題。 – Bathsheba
在一個糟糕的設計中,'Foo'可以是一個類== ==操作符被重載,但不是'!='一個...... – Jepessen
是的,我也這麼認爲。但這是一項新工作,並不認爲我可以改變太多。 –