最好的做法我最近不得不維持一個傳統項目,代碼是沒有編碼模式的一塌糊塗但是有一兩件事引起了我的注意,在某些情況下,布爾類型是在三種不同的方式創建:什麼布爾類型
const bool = true; //conventional
const bool = 1;
const bool = !0;
我知道沒有編碼模式是一種代碼嗅覺,但我想知道使用不同於常用的練習有什麼好處嗎?某些編譯器或解釋器的性能提升?我真的被鼓動了。你想知道有人知道嗎?
最好的做法我最近不得不維持一個傳統項目,代碼是沒有編碼模式的一塌糊塗但是有一兩件事引起了我的注意,在某些情況下,布爾類型是在三種不同的方式創建:什麼布爾類型
const bool = true; //conventional
const bool = 1;
const bool = !0;
我知道沒有編碼模式是一種代碼嗅覺,但我想知道使用不同於常用的練習有什麼好處嗎?某些編譯器或解釋器的性能提升?我真的被鼓動了。你想知道有人知道嗎?
你應該總是使用常規的方式來定義一個布爾值,它是true
和false
(如已經提到拔示巴)。
在的JavaScript,最值導致truthy值的,如果條件。唯一例外的規則是下列值(source):
false
0
(零)""
(空字符串)null
undefined
NaN
(特殊數值意義不是數字!)你舉的例子:
const bool = true; // the regular way to define a boolean
const bool = 1; // a Number, this is truthy in an if-condition, but still, it is just a Number
const bool = !0; // negates a number -> it actually converts it to a boolean during the negation. So, it is actually the same as bool = false;
如果您在另一種語言編程,也並不總是圍繞布爾。如果您正在編寫的編程語言中存在布爾值,那麼您一定要使用它。
一些例子:
true
和false
)和有一個布爾包裝類,其中還包含用於轉換等。(Boolean.TRUE
和Boolean.FALSE
)方法。其他值不能在if條件下評估。0
和1
進行比較。它類似於JavaScript的,因爲它也求最值truthy,除下列(source):
0
'0'
undef
''
#空標()
#清空列表('')
Upvoted。我看不出這個答案有什麼問題。 – Bathsheba
使用true和false。其他任何事情都不太清楚。
你寫了一行代碼。你會讀它數百次。
這篇文章特別提到了C/C++,但它反映了大多數語言。
C++標準狀態(§4.7/ 4):
如果源類型爲布爾假被轉換成零和 true值的值被轉換爲一個。
它們都被允許的原因僅僅是由於編譯器將「真值」轉換爲單個位表示的方式。
它們在運行編譯器時佔用相同的空間量。約定的原因僅僅是爲了可讀性 - 出於這個原因,並不是所有的「編譯器有效」表示都應該被認爲是同樣可取的。正如Google's C++ Style Guide提到:
優化讀者,而不是作者
我們的代碼庫(並提交給它最 各個組件)預計將持續 相當長的一段時間。因此,讀取我們的代碼的大部分時間將花費比編寫更多的時間。我們明確選擇優化 我們的平均軟件工程師閱讀,維護和 調試代碼的經驗,而不是在編寫所述 代碼時容易。
總之,可讀性就是一切。
Upvoted。我看不出這個答案有什麼問題。 – Bathsheba
什麼是常用的做法?蟒蛇,bash或C? – mouviciel
請不要忘記標記你認爲最好的答案,或者解釋爲什麼你覺得目前提供的答案並不令人滿意。 –