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

山本ゆうごブログ

山本ゆうごの仕事メモ

Googleのレファレンスを見ると自ずと言語の主観的評価が決まる

例えばこれ

https://cloud.google.com/datastore/docs/concepts/transactions

言語別に同じ機能を実現するコードが書かれている。

これを見ると、言語の思想が現れる。

意外なのが、Go言語のきったなさ。try-catchがなく、エラーが戻り値として返ってくる。それが全てifで分岐されているので、ビジネスロジックとしての分岐と、例外の分岐が区別し難い。実装上同じでも、ソースコードは人が見るものなので、ロジックとしてどう分岐されているのかをよみとりたい。

例外の分岐がテスト対象なのかどうかってところもあって、ファイルの読み取りの例外って、言語使用上はありえても運用上ありえなかったりして、テストする意味がないというケースもある。

Googleのレファレンスでは、Rubyが登場したりしなかったりする。海外ではスクリプト言語のデフォルトがPythonになりつつある。もうそれは認めないと仕方ない。

Node.jsもいいんだけど、処理が上から流れるのではなく、コールバックで繋いでいくから、「読む順番」が分かりにくい。コールバックをインデントするもんだから、ネストがどんどん深くなって、こんなコードになる。奥に奥に処理が流れるのつらー。

      });
    });
  });
}

コールバック嵐になるのって、実装上がそうだから仕方ないのかも知れないのだけれど、それは実装上の話で、ソースコードは人間様が読むのだから、多次元で読まなくちゃ行けないのってつれーって思う。

いちいち }); が登場するのが、文字数増えてやだなーとか。瑣末だけど。

まとめとしては、Googleのレファレンスをみていると、結局JavaPythonなのかなーって風にみえる。(Googleが標準で使ってるからそっちによるのも無理ないのかなー)