トップ

あどばんすど JavaScript

とりあえず『JavaScript: The Good Parts』

とりあえず『JavaScript: The Good Parts』の内容を基本として、あえて私がスタイルを変えている点、などについて書いてみる。

やっぱりセミコロンは書かない

JSGP ではセミコロンの省略と処理系での補完が徹底して嫌われているのだが、セミコロンというのは本来、行末による区切りがなくても良いようにする構文要素であって、シェルスクリプトや awk の伝統に従い省略してしまうことにする。

省略可能な場所ないし自動補完される場所、あるいは省略不可能で処理系では補完されない場所が微妙なことがあるとは思うが、簡単なコーディング規則でだいたいなんとかなるようである。次のような規則でやっている。

continue は使う

確かに continue を使いたいような場合というのは、関数に切り出して、途中 return にしたほうがいいのだけど、それでもあきらかに continue を使うべきパターン、というのを JSGP 中に発見した。

for in を使った繰返しにおいては obj.hasOwnProperty(key) を使って意図しない key を避けよ、というパターンがあるが、この時サンプルとして示されているコードでは if のブロックの中にループの残り全体を入れてしまっている。こういうパターンでは continue を使ってネストが深くなるのを避けるべきだろう。

もちろん、この 1 段のネストすら避けたくなるような入り組んだコードはリファクタリングしろ、という意図があるのじゃなかろうかとは思うが。

正規表現には慣れるべき。特に正規言語内の機能には

確かに、むやみに凝った正規表現一発で選り分けようとするより、プログラムで「これを選んで、これを除外して、これを選んで」のようにして振り分けろよ、と言いたくなるようなものも見ないではない。が、正規表現は理論的背景のかっちりしたツールなので、習熟するに越したことはない。

++ や -- もよく使う

特に後置の ++ や -- は変化前の値が式の値になる、というのが += 1 や -= 1 と違うので、コードをすっきりできることがある(小手先のコーディングのレベルだが)。なお -- は、「<!--」「-->」で囲んだ HTML コメント中のコードでは念のため避けておいたほうがいいだろう( HTML のほうで -- はコメント終了の直前に(のみ)現れるもの、とされている)。

forEach とかに渡す関数は短ければ一行で

キーワード function が長いが、それでも、一行に詰め込んでしまえるのなら一行にしたほうが簡潔に見えるように思う。80 桁にいつまでもこだわることはないという信仰というか。

use strict まで含めて関数ヘッダとして一行に

関数を書く時には、function (...) { "use strict" まで 1 行に詰め込んでしまう。こうすると grep function hoge.js | grep -v '"use strict"' のようにして、簡単に use strict 忘れやミススペルを検出できる。

== 演算子のチェック

演算子の前後に空白を入れる習慣にしていれば === をうっかり == としてしまっているものを検索するのが簡単。

その他、C 言語と同様な話