読者です 読者をやめる 読者になる 読者になる

Cのプリプロセッサを使ってJavaScriptの前処理を行う

JavaScript

『ハイパフォーマンスJavaScript』を読んだ。

ハイパフォーマンスJavaScript

ハイパフォーマンスJavaScript

全体として非常に良い本だと思ったのだが、9.3章の「JavaScriptファイルの前処理」の章だけで他の全てを圧倒するようなインパクトがあった。

曰く、

#ifdef DEBUG
console.log("debug!");
#endif

のようなC/C++プリプロセッサを使ったJavaScriptを書いて、

% cpp -P -C -DDEBUG script.js

console.log("debug!!!");

のように"-P -C"オプションを使ってcppの前処理をかけてやると便利だよ、だと!

確かにこの手法だと、DEBUG定数を定義しなかった場合、

$ cpp -P -C script.js

何も出力されなくて、「開発時にだけ必要」という処理を行うには便利ではあるのだが、これは本当にベストプラクティスなのであろうか・・・

JavaScript側で工夫してロギングが実行環境に影響されないようにするアプローチはいくつかあると思うが、プリプロセッサを使った手法だと配備されるコードにロギングの痕跡すら残さなくて済むのはメリットだと思った。


ロギングを密に行うことが悪いこととは思わないが、怪盗ロワイヤルのスマートフォン版のボスバトルとかをやるたびに、デバッグコンソールに、

end: initialize

みたいな内容がもりもり出力され、「これ、なんとかならなかったのかなぁ・・・」と思うので、Cのプリプロセッサを使うというアイディアがバットノウハウであったとしても、まだこっちの方がいいなぁと思った。