2017-01-31 10 views
3

Мы следуем руководство airbnb eslint и в этом они говорят, не рекомендуем использовать generatorsПочему генераторы не хорошо переносятся?

  • 11.2 Не следует использовать генераторы на данный момент.

    Почему? Они не очень хорошо переносятся на ES5.

Я, кажется, не быть в состоянии найти какие-либо объяснения относительно того, что они имеют в виду не transpiling хорошо (а не только в этом документе, но на Google). Мы используем babel, и для этого есть полисы. Есть что-то, что мне не хватает?

ответ

3

Они просто ошибаются (или документы серьезно устарели). Transpilers создают конечный автомат с закрытием на основе генераторов и асинхронных функций. Они не хороши, но работают довольно быстро. Единственным недостатком является то, что отлаживать (даже с исходными картами) сложнее.

С другой стороны, использование генераторов не приводит к неудобным обходным решениям в некоторых ситуациях, где генераторы обеспечивают чистое решение. Всегда сначала пишите код для ясности.

EDIT

Мы разработчики узнали в реальной жизни, что некоторые Challanges программирования лучше всего могут быть решены с государственными машин. Генераторы и функции асинхронизации дают вам мощный инструмент для выражения большинства этих состояний.

Так развиваются языки: мы находим многократно возникающую проблему программирования, которая имеет схему решения, поэтому люди создают новые языки программирования с новым синтаксисом, чтобы иметь более короткое решение для этой проблемы. Таким образом мы получили базовые структуры данных, функции, закрытие, классы, функции первого класса, GC, RTTI, отражение и т. Д. Сегодня считается, какой выбор вы используете для своих проектов. Вы можете написать машинный код напрямую или использовать управляемый язык высокого уровня. Аргумент, как правило, относится к скорости выполнения (сборка должна быть скорее правильной?), portabiliy и кривая обучения используемого синтаксиса языка (почему я должен изучать лямбды и урожайность и асинхронно/ждать, когда я и всегда был в состоянии для решения любой проблемы без использования каких-либо из них?). Я лично предпочитаю использовать выразительные языки, и я считаю, что высокоуровневые/управляемые программы не будут медленнее, чем программы навсегда.

Итак, позвольте мне подчеркнуть, что вы проиграли, не используя генераторы: вы в конечном итоге написали одни и те же ста-государственные машины состояний (возможно, замаскированные под коллекцию объектов и функций), которые могут быть сгенерированы из короткой программы с использованием разумного и знакомый синтаксис.

+1

Написано другим способом: «Не используйте транспилеры, потому что они не приятны и сложнее отлаживать». – Rob

 Смежные вопросы

  • Нет связанных вопросов^_^