0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Сложно представить современную разработку без сторонних библиотек. Они помогают нам сэкономить время, избежать множества проблем, с которыми мы бы столкнулись, если бы писали код без использования этой библиотеки, повысить качество кода. И они же с нами могут сыграть злую шутку как при обучении, так и в повседневной работе. Почему? Потому что основная беда сторонних библиотек состоит в том, что<strong>вы не контролируете изменения в ней</strong>.</p>
1
<p>Сложно представить современную разработку без сторонних библиотек. Они помогают нам сэкономить время, избежать множества проблем, с которыми мы бы столкнулись, если бы писали код без использования этой библиотеки, повысить качество кода. И они же с нами могут сыграть злую шутку как при обучении, так и в повседневной работе. Почему? Потому что основная беда сторонних библиотек состоит в том, что<strong>вы не контролируете изменения в ней</strong>.</p>
2
<p><em>“Библиотека is-promise состоит из двух строк кода, а разработчики могут использовать её в своих проектах с помощью однострочного вызова.</em></p>
2
<p><em>“Библиотека is-promise состоит из двух строк кода, а разработчики могут использовать её в своих проектах с помощью однострочного вызова.</em></p>
3
<p><em>Предназначение библиотеки состоит в проверке, что JavaScript-объект является типом Promise, то есть представляет собой конечное завершение асинхронной операции и её результирующее значение.</em></p>
3
<p><em>Предназначение библиотеки состоит в проверке, что JavaScript-объект является типом Promise, то есть представляет собой конечное завершение асинхронной операции и её результирующее значение.</em></p>
4
<p><em>При использовании в продакшне функция isPromise возвращает логический результат yes или no.</em></p>
4
<p><em>При использовании в продакшне функция isPromise возвращает логический результат yes или no.</em></p>
5
<p><em>Но оказалось, что is-promise версии 2.2.0 не соответствует стандартам модуля ES. Как только вышло обновление, проекты, которые использовали is-promise внутри цепочки сборки, начали выдавать ошибку при сборке из-за неправильной поддержки ES-модуля. Сбой библиотеки мгновенно отразился на множестве проектов: от проприетарных проектов с закрытой кодовой базой до некоторых крупнейших опенсорсных проектов экосистемы JavaScript. (с) Habr”</em></p>
5
<p><em>Но оказалось, что is-promise версии 2.2.0 не соответствует стандартам модуля ES. Как только вышло обновление, проекты, которые использовали is-promise внутри цепочки сборки, начали выдавать ошибку при сборке из-за неправильной поддержки ES-модуля. Сбой библиотеки мгновенно отразился на множестве проектов: от проприетарных проектов с закрытой кодовой базой до некоторых крупнейших опенсорсных проектов экосистемы JavaScript. (с) Habr”</em></p>
6
<p>Если вы не работаете в RocketScience (условно говоря, фирме, которая стоит на краю технологий, прокладывая путь другим), то проблема, с которой вы столкнулись, скорее всего, уже кем-то решена, и для нее есть решение в виде библиотеки. И очень заманчиво не разбираться самому, а использовать уже готовое решение, записав “разобраться как работает эта библиотека” в технический долг. И это нас может привести к ситуации, которая описана выше. Поэтому, я рекомендую вывести несколько правил.</p>
6
<p>Если вы не работаете в RocketScience (условно говоря, фирме, которая стоит на краю технологий, прокладывая путь другим), то проблема, с которой вы столкнулись, скорее всего, уже кем-то решена, и для нее есть решение в виде библиотеки. И очень заманчиво не разбираться самому, а использовать уже готовое решение, записав “разобраться как работает эта библиотека” в технический долг. И это нас может привести к ситуации, которая описана выше. Поэтому, я рекомендую вывести несколько правил.</p>
7
<h5>Правило № 1: Прежде чем использовать библиотеку, нужно ответить на вопрос: “А нужна ли она мне? Сколько это мне сэкономит времени? Сколько будет стоить написать все самому?”</h5>
7
<h5>Правило № 1: Прежде чем использовать библиотеку, нужно ответить на вопрос: “А нужна ли она мне? Сколько это мне сэкономит времени? Сколько будет стоить написать все самому?”</h5>
8
<p>На курсе<strong>Java QA</strong>студенты часто используют библиотеку<strong>WebDriverManager</strong>. Безусловно, она очень удобна, ведь нам не надо самому скачивать webdriver, прописывать его в Path…</p>
8
<p>На курсе<strong>Java QA</strong>студенты часто используют библиотеку<strong>WebDriverManager</strong>. Безусловно, она очень удобна, ведь нам не надо самому скачивать webdriver, прописывать его в Path…</p>
9
<p>И поэтому у студентов, которые прочитали best practice, посмотрели видео на YouTube и используют данную библиотеку, возникает большой пробел в этой теме. И когда они по каким-то причинам не могут использовать данную библиотеку, возникают трудности. Ведь до этого данную проблему решала библиотека, а теперь ее нельзя использовать. Следовательно, второе правило, которое я предлагаю вывести, будет звучать так:</p>
9
<p>И поэтому у студентов, которые прочитали best practice, посмотрели видео на YouTube и используют данную библиотеку, возникает большой пробел в этой теме. И когда они по каким-то причинам не могут использовать данную библиотеку, возникают трудности. Ведь до этого данную проблему решала библиотека, а теперь ее нельзя использовать. Следовательно, второе правило, которое я предлагаю вывести, будет звучать так:</p>
10
<h5>Правило № 2: Какую проблему решает эта библиотека? Могу ли я решить ее сам, без использования данной библиотеки?</h5>
10
<h5>Правило № 2: Какую проблему решает эта библиотека? Могу ли я решить ее сам, без использования данной библиотеки?</h5>
11
<p>Если на вторую часть вопроса вы можете ответить положительно, -- смело используйте. Иначе -- это повод задуматься.</p>
11
<p>Если на вторую часть вопроса вы можете ответить положительно, -- смело используйте. Иначе -- это повод задуматься.</p>
12
<p>Однако не стоит впадать и в другую крайность --<strong>ЯСделаюСам</strong>. Безусловно, рано или поздно вы сможете сделать свой аналог фреймворка Spring или Selenium, но сколько это займет времени? Будет ли он такого же качества? Ведь у популярных фреймворков большое коммьюнити, которое помогает искать ошибки и развивать данный проект. Вы уверены, что сможете написать код такого же качества?</p>
12
<p>Однако не стоит впадать и в другую крайность --<strong>ЯСделаюСам</strong>. Безусловно, рано или поздно вы сможете сделать свой аналог фреймворка Spring или Selenium, но сколько это займет времени? Будет ли он такого же качества? Ведь у популярных фреймворков большое коммьюнити, которое помогает искать ошибки и развивать данный проект. Вы уверены, что сможете написать код такого же качества?</p>
13
<h5>Правило № 3: Старайтесь соблюдать “золотую середину”, между своими реализациями и сторонними библиотеками. Где можно -- написать самому. Где необходимо -- скачать готовую.</h5>
13
<h5>Правило № 3: Старайтесь соблюдать “золотую середину”, между своими реализациями и сторонними библиотеками. Где можно -- написать самому. Где необходимо -- скачать готовую.</h5>
14
<p>Данное правило осложняется тем, что грань между “можно” и “необходимо” очень размыта. Ведь самому можно написать все, а сделать задачу нужно еще вчера, поэтому необходимо использовать библиотеку для скорости. Но данное понимание приходит с опытом (в том числе и с негативным).</p>
14
<p>Данное правило осложняется тем, что грань между “можно” и “необходимо” очень размыта. Ведь самому можно написать все, а сделать задачу нужно еще вчера, поэтому необходимо использовать библиотеку для скорости. Но данное понимание приходит с опытом (в том числе и с негативным).</p>
15
15