Несколько месяцев назад я начал работать в новой компании, которая использует Javascript с Node.js в качестве среды разработки на полный рабочий день. Это был большой отход от моих прежних языков/сред Java/C++ (так называемых классических). Javascript был глотком свежего воздуха от всей тяжести классических языков. Всю свою карьеру я считал Javascript языком пользовательского интерфейса и поэтому старался держаться от него на расстоянии. Итак, когда я начал использовать его, я был поражен его простотой и легкостью.

Мне нравится…

  1. Как легко было начать работу с простым приложением за несколько минут.
  2. Он имеет огромное присутствие в сообществе открытого исходного кода.
  3. Многие бесплатные библиотеки доступны для повторного использования.
  4. Гибкость..
  5. Никаких строгих определений… много свободы.
  6. Легко начать вносить свой вклад, не изучая многого.
  7. Тщательная реализация может дать вам очень быстрый код
  8. Быстрый цикл разработки — компания счастлива, разработчик счастлив… блаженство, блаженство, блаженство.

Вау... тебе не кажется, что приведенный выше список почти напоминает сцену онлайн-знакомств... ;)?

Итак, вы видите, что все это веские причины принять Javascript в качестве языка для написания производственного кода, и кажется очень заманчивым посвятить себя изучению и написанию Javascript. Но…

Да, это так, Но…

Углубившись в мир Javascript, я понял, что перечисленные выше моменты, которые мне нравятся в Javascript, теперь заставляют меня не любить его, и я понимаю, что это во многом связано с культурой, которая выросла вокруг Javascript. Вот мое объяснение:

Проблемы…

  1. Легко начать. Правильный способ начать — учиться, понимая. Быстрое и простое отношение к Javascript поощряет разработчиков (… в основном из-за внешнего давления) строить замки с чем-то, что они не понимают должным образом. Все мы знаем, что с шатким фундаментом мы получаем шаткое здание.
  2. Присутствие открытого исходного кода — iLove! и я поддерживаю это всей душой. Но с каждой свободой/полномочием приходит ответственность, поэтому нам нужно быть осторожными с владением/обслуживанием и поддержкой кода. Мы должны установить четкие ожидания относительно того, что ожидается и как это поддерживается.
  3. Бесплатные библиотеки — тоже здорово! Мы должны быть осторожны и дисциплинированы, прежде чем использовать библиотеку, чтобы знать, что она делает. Нам нужно задать вопросы о его безопасности, мы должны понять его лицензирование. Но проблема, которую я вижу, еще серьезнее. Чувствовали ли вы, что начали настолько полагаться на свой смартфон, что забыли делать простые математические вычисления в уме? Вот что я думаю об использовании сторонних бесплатных библиотек. Наш естественный инстинкт мышления, направленный на поиск решений проблем, может просто атрофироваться в поисковое действие.
  4. Гибкость. Отсутствие строгой типизации, функции как объекты первого класса, все это требует большой дисциплины и практики для освоения, и без освоения этого я думаю, что Javascript не следует использовать в производственной среде. код. Передача функций — это идея, с которой я не могу согласиться. Передача функций сродни рассылке вашего пароля вашим коллегам. Вы не можете контролировать, какие/как эти функции будут использоваться.
  5. Легко внести свой вклад — отлично… но хотите ли вы угощать кого-то плохой едой под видом бесплатной еды? Точно так же вы не должны давать программное обеспечение, в котором есть ошибки или которое вы внедрили для развлечения и не полностью понимаете себя.
  6. Цикл быстрой разработки и т. д. — это как маркетинговые термины. Они не подходят инженеру/художнику/мыслителю. Это аргументы в пользу компаний, которые ищут быстрый и грязный способ вывести продукт на рынок. Эти продукты похожи на волдыри, готовые лопнуть.

Я вижу спагетти-код со всевозможными странными зависимостями между модулями. Ад обратного вызова затрудняет отслеживание потока кода. Разработчики постоянно срезают углы, выпуская быстрые и грязные функции и исправления.

Конечно, с дисциплиной и практикой мы можем достичь совершенства. Абсолютно! Но на самом деле вы думаете, что люди из бизнеса, не связанные с технологиями, которые задают тон, предоставят разработчикам достаточно времени и свободы для развития такой дисциплины?

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