JSLintオプション考察「stupidity」

2013年08月19日

カテゴリー:

「stupidity」オプションは、Node.jsを利用する際に、「~Sync」という名前のメソッドの利用を許可するかどうかのオプションらしいです。

・・・「~らしい」と書いたのは、私がNode.jsを使ったことが無いので、このオプションの意味をイマイチ理解できなかったからです。

英文ですが、こちらにこのトピックについてのQ&Aのようなものがありましたので興味があればのぞいてみて下さい。

上記のサイトを見てみるとなんとなく言わんとしていることが分かったような気がするので、一応まとめておきますが、Node.jsを使ったことが無いうえに、英語が赤点レベルなので、まったく説得力がありません。ですので、次の文章は、文末に「多分」を付けて読んで下さい。

Node.jsには非同期処理を実行するメソッドが多数存在しますが、その中には(非同期ではなく)同期で処理を行うバージョンが用意されているものもあります。これらはメソッド名の末尾に「~Sync」というサフィックスが付けられています。

同期処理である~Syncメソッドを使ってもプログラムコードとしては問題はありませんが、これらのメソッドはその処理が完了するまで、他のタスクの実行をブロックしてしまいます。例えば時間のかかる処理を同期メソッドで実行してしまうと処理が完了するまでの間、いわゆる「フリーズ」「応答なし」という状態になってしまうため、ユーザー体験としては非常に好ましくないものになります。
同期メソッドでの処理は非同期メソッドに置き換え、最適化すべきでしょう。

要は「非同期メソッドがあるのに、わざわざ同期メソッドで処理するな!」ということが言いたいんだと思います。また、このオプションの名前「stupidity(=ばか、愚か)」は、このようなコードに対するJSLint作者のメッセージなのでしょう。(あまりこういう名前の付け方は好きではありませんが。)

まぁ、Node.jsを知らないなりにまとめてみましたが、とりあえず私みたいに、Node.js?使ってないよ?という方はこのオプションは無視(デフォルトのまま)でOKです。

JSLintのオプション一覧ページへ