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 個意見
☂