2013年4月10日

古いバージョンは捨てていこう

もうだいぶ前の話になるけど、UnMHT ver.6.0.0 から Firefox 16 未満のサポートが終了しました。それまでは互換性は可能な限り保つように、例えば Mac OS 9 の Wazilla でも動くように、という事を考えてたんだけど、色んな理由があってポリシーを変更。
  1. 互換用のコードが増えてくると保守性が落ちる
  2. テストが大変(むしろテストできてなかった)
  3. 新しいものが使えない!
昔は(今も?)場当たり的なバグ修正をしてたので、互換用の分岐が一体何のためなのか(むしろ分岐が互換用なのかどうかすら)コメントを書いてなかったのです(書けよ!)。で、それが増えてくると新機能の追加時に分岐を見て頭をかかえるワケ。

テストに関しては、実際 AMO の中の人から「動かねえじゃねえか!」って怒られちゃった経緯もあって。古いモノ用の部分を壊さずに開発してたつもりでも、結構壊しちゃってるよね。テストを全バージョンでやるのはタイヘンだし、次第にテストがおざなりに……。 ユニットテストとか自動テストとか導入したほうがいいんだろうねぇ。
 それと、新しい構文や関数が使えないのは結構イタイ。新しいコンポーネントとか、コンポーネントの新しい機能とかなら、機能の存在をチェックできるし、「古いバージョンでは使えません」 で通すんだけど、新しい構文を使うとなると古いバージョンで一切動かなくなっちゃう。let とか map とか使いたいしー。実際 let とか map、filter って開発の効率に大きく影響するモノだと思う。もちろんそれまではナシで開発してきたんだから、下がるって事はないんだけど、目の前に便利そうなモノが並べられてるのに使えない、ってなるとモチベーションが下がっちゃう。バグ回避に有効なものもあるし。


実際、新しい構文、関数を取り入れてからコードがとてもスッキリしたような気がしますよ(人に見せて「どう?」って聞いた事はないけど)。モジュール分けも進むし、意味と表記が近くなったというか、そんな感じ?

最近は JavaScript も変革が進んでるみたいで、色んな新しい機能が導入されてます。Firefox 22 では Arrow Function が導入予定だとか。早く使いたいなー。とは言っても、さすがに最新バージョンしかサポートしないようではアンマリなので、使えるようになるのは Firefox 25 が出る頃カナ。

高速リリースに関して否定的な意見もあるみたいだけど、新しいものを積極的に取り入れながら開発するには便利なものだよ。だって古いバージョンがどんどん切れるんだもん。

0 件のコメント:

コメントを投稿