Несколько месяцев назад я начал работать в новой компании, которая использует Javascript с Node.js в качестве среды разработки на полный рабочий день. Это был большой отход от моих прежних языков/сред Java/C++ (так называемых классических). Javascript был глотком свежего воздуха от всей тяжести классических языков. Всю свою карьеру я считал Javascript языком пользовательского интерфейса и поэтому старался держаться от него на расстоянии. Итак, когда я начал использовать его, я был поражен его простотой и легкостью.
Мне нравится…
- Как легко было начать работу с простым приложением за несколько минут.
- Он имеет огромное присутствие в сообществе открытого исходного кода.
- Многие бесплатные библиотеки доступны для повторного использования.
- Гибкость..
- Никаких строгих определений… много свободы.
- Легко начать вносить свой вклад, не изучая многого.
- Тщательная реализация может дать вам очень быстрый код
- Быстрый цикл разработки — компания счастлива, разработчик счастлив… блаженство, блаженство, блаженство.
Вау... тебе не кажется, что приведенный выше список почти напоминает сцену онлайн-знакомств... ;)?
Итак, вы видите, что все это веские причины принять Javascript в качестве языка для написания производственного кода, и кажется очень заманчивым посвятить себя изучению и написанию Javascript. Но…
Да, это так, Но…
Углубившись в мир Javascript, я понял, что перечисленные выше моменты, которые мне нравятся в Javascript, теперь заставляют меня не любить его, и я понимаю, что это во многом связано с культурой, которая выросла вокруг Javascript. Вот мое объяснение:
Проблемы…
- Легко начать. Правильный способ начать — учиться, понимая. Быстрое и простое отношение к Javascript поощряет разработчиков (… в основном из-за внешнего давления) строить замки с чем-то, что они не понимают должным образом. Все мы знаем, что с шатким фундаментом мы получаем шаткое здание.
- Присутствие открытого исходного кода — iLove! и я поддерживаю это всей душой. Но с каждой свободой/полномочием приходит ответственность, поэтому нам нужно быть осторожными с владением/обслуживанием и поддержкой кода. Мы должны установить четкие ожидания относительно того, что ожидается и как это поддерживается.
- Бесплатные библиотеки — тоже здорово! Мы должны быть осторожны и дисциплинированы, прежде чем использовать библиотеку, чтобы знать, что она делает. Нам нужно задать вопросы о его безопасности, мы должны понять его лицензирование. Но проблема, которую я вижу, еще серьезнее. Чувствовали ли вы, что начали настолько полагаться на свой смартфон, что забыли делать простые математические вычисления в уме? Вот что я думаю об использовании сторонних бесплатных библиотек. Наш естественный инстинкт мышления, направленный на поиск решений проблем, может просто атрофироваться в поисковое действие.
- Гибкость. Отсутствие строгой типизации, функции как объекты первого класса, все это требует большой дисциплины и практики для освоения, и без освоения этого я думаю, что Javascript не следует использовать в производственной среде. код. Передача функций — это идея, с которой я не могу согласиться. Передача функций сродни рассылке вашего пароля вашим коллегам. Вы не можете контролировать, какие/как эти функции будут использоваться.
- Легко внести свой вклад — отлично… но хотите ли вы угощать кого-то плохой едой под видом бесплатной еды? Точно так же вы не должны давать программное обеспечение, в котором есть ошибки или которое вы внедрили для развлечения и не полностью понимаете себя.
- Цикл быстрой разработки и т. д. — это как маркетинговые термины. Они не подходят инженеру/художнику/мыслителю. Это аргументы в пользу компаний, которые ищут быстрый и грязный способ вывести продукт на рынок. Эти продукты похожи на волдыри, готовые лопнуть.
Я вижу спагетти-код со всевозможными странными зависимостями между модулями. Ад обратного вызова затрудняет отслеживание потока кода. Разработчики постоянно срезают углы, выпуская быстрые и грязные функции и исправления.
Конечно, с дисциплиной и практикой мы можем достичь совершенства. Абсолютно! Но на самом деле вы думаете, что люди из бизнеса, не связанные с технологиями, которые задают тон, предоставят разработчикам достаточно времени и свободы для развития такой дисциплины?
Поэтому я думаю, что принципиальным инженерам и архитекторам важно помнить об этих моментах, прежде чем загнать себя в ловушку Javascript.