単一行コメント記号の直後にスペースを付けないのは「コメントアウトされたコード」を示す

プログラミングにおいて、単一行コメントを書く時は、言語に応じて記号文字は違えど、

# コメントです (Python など)
// コメントです (Java など)

こんな風に、#//記号の直後にスペースを置いて書くことがほとんどだろう。汚いコードを書く人達は、時に記号の直後にスペースを書かなかったりするが、世の一般的なコードは記号の直後にスペースが入っている。

しかし、世の一般的なコードの中でも、記号の直後にスペースを書かない場合があることに気付いた。

例えば、Apache の設定ファイル httpd.conf の場合。

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule authn_file_module libexec/apache2/mod_authn_file.so
#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so

Dynamic Shared Object … から Example までの塊は、人が読むコメントとして書かれているが、その下の LoadModule の行を見ると、

というように、コメントアウトする # 記号の直後にスペースが打たれていない。

次は PHP の設定ファイル php.ini の例。

;;;;;;;;;;;;;;;;;;;;
; php.ini Options  ;
;;;;;;;;;;;;;;;;;;;;
; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini"
;user_ini.filename = ".user.ini"

; To disable this feature set this option to empty value
;user_ini.filename =

;;;;;;;;;;;;;;;;;;;;
; Language Options ;
;;;;;;;;;;;;;;;;;;;;

; Enable the PHP scripting language engine under Apache.
; http://php.net/engine
engine = On

コチラはコメントアウト記号がセミコロン ; で、最終行の engine = On などはコメントアウトされていないコード。

; Name for user-defined php.ini … という行は、行頭のセミコロンの直後にスペースがあるが、その次の行は

という風に、 ;user_ini の間にスペースが開いていない。

コレは何なのだろうか。


最近になって、このスペースが書かれていないコードは、コメントアウトされたコードを示していることに気付いた。

そこで「comment out without space」などでググってみると、次のような Stackoverflow が見つかった。

I've developed software in many languages for about 10 years on projects large and small.
I have yet to see anyone intentionally not use a space.
In the scheme of things it doesn't really matter that much (after all, we all know those are comments and can read them),
but I do think the no-space version looks similar to commented-out code and requires an extra millisecond of brain power to confirm it is a comment :-)

Agreed, spaces for comments, no spaces for commented-out code.

意訳すると、

という意見だ。

それに対して

と返信が付いている。


よくよく php.ini のコードとコメントを見ると、次のように書いてある。

; To disable this feature set this option to empty value
;user_ini.filename =

和訳するとこうだ。

; この機能を無効にするには、このオプションに空の値を設定すれば良い。(次のように)
;user_ini.filename =

つまり、このコメント文と、「コメントアウトされたコード」を参考に、独自に設定したい場合は、「コメントアウトされたコード」のコメント記号を外して、

; この機能を無効にするには、このオプションに空の値を設定すれば良い。(次のように)
user_ini.filename =

このようにコードを有効化してやれば良い、ということだ。


ということで結論。

自分は全てのコメントでスペースを付与していたので、「コードとして有効化する場合がある」コメントについては、スペースなしで書くようにしようかなーと思った。