NOT 運算子(!)後面不加空白的理由
快速答案是「一元運算子」。
NOT matter 要寫成 ! matter 還是 !matter 這個問題……
很長一段時間我是用前者,多個空白比較明顯,不會漏看驚歎號。
-
ruby 文件 not 運算子的範例,
! me和p(! false)也有空白,我想就是求明顯、清楚。 -
Kohana framework 的 Conventions and Style 也有類似考量:
The ! (bang) character must have a space on either side to ensure maximum readability.
『
!的兩邊都必須有一個空白,以確保最大可讀性。』
註:這一章是講括弧用法,所以是說if ( ! $foo)和if (!$foo)的情況。 -
不過我發現別人的寫法,絕大部分都是不空白的
!matter風格。
我已經沒印象上次看到! matter是何時了。我也到 PTT ruby 板問了一下。
-
沒有明確出處,但找到一些敘述,一般不空白的理由是「Unary operation(一元運算子)後面不加空白」。
就像-4不會寫成- 4。 -
更精確地說是「一元運算子和它的運算元之間」不加空白。
就像這個 NetBeans 選項 Bug 135699 – Use option "space between unary operator and operand"。 -
最後在 Douglas Crockford 的 JS Code Conventions 看到更具體、可以照做的規範:
No space should separate a unary operator and its operand except when the operator is a word such as typeof.
『一元運算子和它的運算元之間,不該有空白,除非該運算子是一個 word,例如 typeof。』
其實我已經改用 !matter 一段時間了。
仍然懷疑 ! matter 沒有錯,但眼前還是解決風格一致的問題先了。
有 0 個意見
☂