快速答案是「一元運算子」。


NOT matter 要寫成 ! matter 還是 !matter 這個問題……
很長一段時間我是用前者,多個空白比較明顯,不會漏看驚歎號。


  1. ruby 文件 not 運算子的範例! mep(! false) 也有空白,我想就是求明顯、清楚。

  2. Kohana framework 的 Conventions and Style 也有類似考量:

    The ! (bang) character must have a space on either side to ensure maximum readability.

    ! 的兩邊都必須有一個空白,以確保最大可讀性。』
    註:這一章是講括弧用法,所以是說 if ( ! $foo)if (!$foo) 的情況。

  3. 不過我發現別人的寫法,絕大部分都是不空白的 !matter 風格。
    我已經沒印象上次看到 ! matter 是何時了。

    我也到 PTT ruby 板問了一下

  4. 沒有明確出處,但找到一些敘述,一般不空白的理由是「Unary operation(一元運算子)後面不加空白」。
    就像 -4 不會寫成 - 4

  5. 更精確地說是「一元運算子和它的運算元之間」不加空白。
    就像這個 NetBeans 選項 Bug 135699 – Use option "space between unary operator and operand"

  6. 最後在 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 沒有錯,但眼前還是解決風格一致的問題先了。