奥に向かってプログラムを書く、という行為

昔々、関数型言語をはじめにやったとき、こういう印象を持ちました。奥に向かって突き進んで戻ってくるような感じ。

その感覚がnode.jsでも味わえます。

node.js の場合、すべてのメソッドが非同期で実行されるので。

var foo = hoge();
var bar = piyo(foo);
...

とかいった、縦に書き方をしません。

コールバック関数を使って、

hoge(function(foo){
   piyo(foo, function(bar){
      ...
   }
});

あるいは、Event Emitter と呼ばれるものを使って

var event1 = hoge();
event1.on('end', function(foo){
   var event2 = piyo(foo);
   event2.on('end', function(bar){
      ...
   });
});

といった形で書いていきます。この書き方をすると、自然とglobalオブジェクトを汚さない = 副作用の少ないプログラムが書きやすくなるんですよね。。。なんででしょう。

このインデントが奥まっていく様子が、なんともいえない心地よさを与えてくれます。