2017-01-31 5 views
3

我々はairbnb eslintガイドを従っているし、その中に、彼らは今の発電機を使用しないでくださいgeneratorsなぜジェネレータはうまくいきませんか?

  • 11.2を使用していないお勧めしますと言います。

    なぜですか?彼らはES5にうまく移行しません。

私は、彼らは(だけでなく、この文書に記載されているが、Googleに)うまくtranspilingないで何を意味するかについての任意の説明を見つけることができるようには見えません。我々はバベルを使用しており、これを行うためのポリフィルがあります。私は行方不明のものがありますか?

答えて

3

これらは単に間違っている(またはドキュメントが真剣に古くなっています)。 Transpilersは、ジェネレータと非同期関数からクロージャベースのステートマシンを作成します。彼らは素敵ではありませんが、かなり速く働きます。唯一の欠点は、デバッグするのが難しいことです(ソースマップでさえも)。

一方、ジェネレータを使用しないと、ジェネレータがクリーンなソリューションを提供する状況によっては、厄介な回避策が発生することがあります。最初に明快にするために、常にコードを書いてください。

EDIT

我々の開発者は、いくつかのプログラミングシャロンが最高の状態マシンで解決することができ、実際の生活の中で学びました。ジェネレータと非同期関数は、これらのステートマシンの大部分を表現するための強力なツールを提供します。

これは言語が進化する方法であり、ソリューションスキームを持つ繰り返し発生するプログラミング問題があるため、新しい構文で新しいプログラミング言語を作成し、その問題に対する解決策を短くします。これは、基本的なデータ構造、関数、クロージャ、クラス、ファーストクラス関数、GC、RTTI、リフレクションなどを得た方法です...今日、あなたのプロジェクトにどの言語を使用するかは選択問題です。マシンコードを直接書くことも、高度な管理言語を使用することもできます。引数は通常実行速度が(アセンブリは速くなければなりません)、portabiliy、言語構文の学習曲線はです(私はラムダとイールドとasync/awaitを学ぶのはなぜでしょうか?それらを使用せずに問題を解決するには?)私は個人的に表現力豊かな言語を使いたいと思っています。高水準/管理プログラムはネイティブプログラムよりもずっと遅くはないと私は信じています。

ジェネレータを使用しないことで失うものを強調しておきましょう。ショートラインのプログラムから生成できる同じ100行のステートマシン(おそらくオブジェクトと関数のコレクションと見なされる)おなじみの構文。

+1

別の言い方をすれば、「蒸散器は使い勝手が悪く、デバッグが難しいため、使用しないでください」 – Rob

関連する問題