main()しぐさ

asyncawaitで書いていると、とりあえずasyncしてあげるためだけのmain()を書きたくなる(書いている)。これを見たり書いたりすると古の作法を思い出してしまい、体がかゆくなってしまう。セケンではあまり話題になっていなさそうなので、僕がうまく使えていないだけのようだ。それともざっくりIIFEで括るのが主流なのだろうか。"use async";とかないのかな。

await thud(
  await xyzzy(
    await plugh(
      await fred(
        await waldo(
          await garply(
            await grault(
              await corge(
                await quux(
                  await qux(
                    await baz(
                      await bar(
                        await foo()))))))))))));

いわゆるwaterfallと呼ばれるようなバケツリレーの処理をこのようなコードに機械的に変換していたら楽しくなってきた。ネストがどうとかいうことより、実際に処理される順と書かれている順が真逆なので良くない。カッコの中にawaitを書くのが良くないという話か、awaitは必ず明示的に値を受け取るべきという話なのかもしれない。

Promiseと違ってasync/awaitは書きやすさのわりに人が書くべきものではないという印象を持ってしまった。フローチャートを書いたら変換してくれるような自動コード生成の分野で最大の威力を発揮しそうだ。でも書く。