HSP3は ;
と //
の2種類のコメントがあって、長いこと //
を使ってきたけど、;
に変えるかも……という話。(わりとどうでもいい話。)
HSP3のコメントの構文
HSP3には改行までのコメントアウトのために2種類の構文がある。
;
(BASIC風)//
(C++風)
公式のスクリプトは ;
を使っていることがほとんどだと思う。
私がHSP3で //
を使うようになったのはたしか10年ぐらい前から。当時C++を触りだして、//
のほうが「一般的」だということを知ったからだったと思う。
ただ改めて思うと「一般的」というのは必ずしも事実でなかった。
コメントの記号は言語によって千差万別といってよく、人気のある言語だけでも #
や --
をよくみる。
;
をコメントとするのも、アセンブリ風の言語や設定ファイル系の言語でよくみる。
そのため //
を使うべき積極的な理由はない。
むしろ多数派の ;
を使うべき、ということに最近気づいた。
VSCodeの拡張機能
これに気づいたきっかけはVSCodeの拡張機能だ。
VSCodeでは Ctrl+/ を使うと行のコメントアウトを切り替える機能がある。 この機能のため、拡張機能側でコメントの記号を選ぶ必要がある。
HSP3の拡張機能としてはおそらく language-hsp3 がもっとも使われていて、これは ;
をコメントにしている。
つまり Ctrl+/ を押すと行頭に ;
が挿入または除去される。
自作の拡張機能である hsp3-vscode-syntax
では //
を使うように設定してある。
影響
そういうわけで knowbug、hsp3-ginger、hsp3-modules などのコードベースで //
から ;
への変更を行うかもしれない。
hsp3-vscode-syntax
の次のメジャーバージョンではコメントの記号が ;
になるかもしれない。
(追記 2021-08-18 行いました。)
余談: ifのカッコ
関連した話題として、ifの条件式をカッコで囲むかどうかというのがある。
C言語のif文の構文では、条件式全体をカッコで囲む必要がある。 一方HSP3では、条件全体をカッコで囲む必要はない。
// 条件式をカッコで囲むとき
if (条件) { 本体 }
// 囲まないとき
if 条件 { 本体 }
私は以前まで「囲む」ように書いていた。そうし始めたのも、コメントを //
にしたのと同じ時期で、理由も似たようなものだと思う。
他の言語をみてみると、たしかにifの条件式をカッコで囲むのが必須な言語は少なからずある。
しかしここ10年ぐらいに設計された言語では、C系の言語でも、ifの条件式は別にカッコで囲まなくてもよくなっている。Rust、Go、Swiftなど。
また、C言語の影響にないOCamlなどの言語では昔から if 条件 then 本体
という構文であり、カッコはない。
HSP3の構文的に、条件式の周りのカッコは冗長なだけで、積極的に書く利点はない。 そういうわけで、ここ数年で書いたコード (例えばknowbugのコード) では、条件式をカッコで囲んでいない。