JavaScript の ; を省略する派

むかし同じチームだったひとに、JavaScript のセミコロンを省略する派のひとがいて、他の人と「もう日本語かくとき句読点も省略すればいいじゃないの」とか、散々いっていた。でも実は GitHub も省略派らしい。

GitHub の JavaScript Styleguide は、まず最初の「新しい JS は CoffeScript で書け」にびっくりするのだけど、さらに読み進めていくと、既存の JavaScript について「なるだけセミコロンは使うな」とある。

Do your best to never use a semicolon. This means avoiding them at line breaks and avoiding multi-statement lines. For more info, read Mislav's blog post.

出来る限りセミコロンは使わないこと。これは行の終わりにセミコロンを置かないこと、複数の文を一行にまとめないこと、を意味します。詳しくは Mislav のブログ記事を読んでください。

実際に Mislav Marohnić さんの Semicolons in JavaScript are optional を読んでみると「セミコロンを置くべき理由」に細かく反論されていた。

というわけで、個人で書くものではしばらくセミコロンを省略してみようと思いました。

追記

実際にセミコロンを省略する派になるとしたら、丸括弧以外にも角括弧や演算子の前にセミコロンをいれると意図しない文の継続を防げます、という部分を訳していませんでした。詳しくは Mislav Marohnić さんもリンクしている Inimino さんの JavaScript Semicolon Insertion を読んでください。

また、Node Package Manager の開発者の Isaac Z. Schlueter さんは、セミコロン省略 + カンマ行頭派で An Open Letter to JavaScript Leaders Regarding Semicolons という記事を書いています。彼が「リーダー達」に主張するのは「セミコロンを省略しろ」ではなくて「セミコロン自動挿入 (Automatic Semicolon Insertation - ASI) がどう動作するかを理解せず、なにか信頼できないもののように扱い、間違った情報を流すべきではない」ということです。

Like most things in JavaScript, the statement termination rules are not very well designed, but they’re also not particularly hard to understand and use. That understanding just takes a bit of time and effort.

Cozy up with some hot chocolate and the ECMAScript spec some Saturday afternoon. Practice a little. Play around with some test programs. It’s a good time.

Or don’t do that, if you don’t feel like it. It’s your life. You almost certainly have better things to do with it.

Just please stop making authoritative claims like “terminate all lines with semicolons to be safe.” It’s not any safer, or more reliable.

JavaScript のほとんどの部分と同じく、文の終端ルールは、よくデザインされてるとは言いがたいが、とりわけ理解することや使うことが難しい、ということはない。すこしの時間と努力があれば理解できる。

ホットチョコレートと ECMAScript の仕様とで、土曜の午後にくつろいで、ちょっと練習して、テストプログラムで遊んだりしてみよう。楽しいよ。

あるいは、そう感じないならしなくてもいい。あなたの人生だからね。きっと、もっとやるべきことがあるんだろう。

ただ止めてほしいのは、もっともらしく「すべての行に、安全のためにセミコロンで終わらせなさい」なんてことをいうことだ。それは別に安全でも、より信頼できるわけでもない。