Код
#статьи

Изобретайте велосипеды: почему это должен делать каждый разработчик

Сказать программисту, что уже есть библиотека, делающая Х, — это то же самое, что сказать музыканту, что уже есть песня про любовь.

 vlada_maestro / shutterstock

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

Многие считают это занятие чем-то неэффективным: оно отнимает время, которое можно потратить на что-то стоящее, вместо того чтобы делать то, что уже сделали за тебя.

Я с этим не согласен, потому что очень часто проблему можно решить более эффективным способом.

Важно! Всё это касается ваших личных проектов или проектов, в которых кодом занимаетесь только вы. Работая в команде, используйте выбранные готовые инструменты.

Чем опасен отказ от велосипедов

Больше всех готовые решения любят разработчики на JavaScript — они чаще других пользуются фреймворками и библиотеками.

Доходит даже до того, что они называют себя не JS-разработчиками, а React-, Angular-, Vue-разработчиками и так далее. В принципе, в этом нет ничего плохого — работодателю проще найти человека, который разбирается в том, что уже используется в его проекте. Но тут вас подстерегает первая проблема.

Поверхностные знания

Многие разработчики на фреймворках зачастую плохо знают сам язык и как он вообще устроен. В случае с JS многих пугает работа с DOM — они не знают, что это и зачем нужно. А это, между прочим, самое главное в JavaScript.

JS был одним из первых языков, которые я изучал. На тот момент он показался мне сложным, а вот jQuery я освоил достаточно быстро. То есть я смог разобраться с фреймворком, не зная языка, — мне это было не нужно, потому что я и без него справлялся.

Другой яркий пример связан с PHP: однажды мне пришлось переделывать проект за другим разработчиком, который использовал библиотеку для работы с базой данных.

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

К тому же в PHP уже есть необходимый функционал, который действительно прост и безопасен, — PDO. Знай об этом предыдущий разработчик или автор библиотеки — мне не пришлось бы мучиться.

Как тут поможет велосипед

Так как в веб-разработке постоянно приходится иметь дело с базами данных, я написал свой велосипед поверх PDO. В результате я лучше разобрался в том, как устроены базы данных и запросы к ним, и написал то решение, которое будет удобно мне и отлично впишется в мои проекты.

Это был статичный метод, который принимает запрос и массив с параметрами, а потом возвращает либо массив со строками из таблицы, либо номер вставленной строки, либо просто булево значение — в зависимости от того, какой запрос был отправлен.

Пересматривая его сейчас, я вижу, что он не идеален, но само его написание было для меня полезным опытом. Не говоря уже о том, что он ускорил мою работу над проектами, когда я ещё писал на PHP.

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

Плохая оптимизация

Многие фреймворки и библиотеки, вроде того же jQuery, снижают скорость работы сайта и занимают место на сервере. Многие так зависят от разных подключаемых скриптов, что их веб-страницы начинают выглядеть так:

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

Если вы пользуетесь jQuery, то, скорее всего, вам нужны только AJAX, методы для изменения контента/классов/стилей и селекторы. А это лишь малая капля того, что есть в jQuery.

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

Как тут поможет велосипед

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

Это позволит ускорить его загрузку и снизить потребление оперативной памяти. Даже очень сложные библиотеки можно заменить относительно небольшим объёмом кода.

Например, чтобы реализовать описанный выше часто используемый функционал jQuery, потребуется около 5 КБ скриптов, а может, даже и меньше. Для сравнения: сама библиотека весит 88 КБ (минифицированная версия).

Уязвимости и бэкдоры

Это, пожалуй, самая серьёзная проблема.

Когда вы в последний раз изучали исходный код библиотеки, которой пользуетесь? Разработчики либо могли случайно допустить ошибку, из-за которой ваш сайт будет взломан, либо добавили бэкдор, чтобы самим получить доступ к серверу.

В 2018 году в одной из популярных библиотек для Node Package Manager был обнаружен серьёзный бэкдор, который позволял запускать на сервере произвольный код.

Когда скачал для сайта скрипт валидации бесплатно и без смс

Также бэкдоры находили сразу в 73 библиотеках и 300 приложениях — и это только на GitHub, где любой может посмотреть код публичного репозитория.

Как тут поможет велосипед

Никто из нас не способен создать систему, которая будет защищена от взлома на 100%: если у злоумышленника достаточно времени, знаний и средств, он способен обойти любые препятствия.

Всё, что вы можете, — повысить ресурсозатратность взлома настолько, чтобы он перестал быть рентабельным. Никто не захочет взламывать блог о садоводстве, если для этого придётся сильно напрягаться. Другое дело, если это сайт Microsoft.

Кадр из х/ф }{0ТТ@БЬ)Ч

Разобравшись в том, какие приёмы взлома самые распространённые, вы сможете лучше защищать свои проекты. Это, в свою очередь, сделает вас более ценным специалистом.

Заключение

Я считаю, что каждый программист должен уметь реализовать всё, что ему необходимо, самостоятельно. Естественно, это не значит, что нужно каждый раз писать с нуля весь код для каждого проекта — вы можете сделать несколько собственных библиотек и использовать их, когда они будут нужны.


Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована