Информация об изменениях

Сообщение Re: Из кубиков от 26.09.2020 11:46

Изменено 26.09.2020 11:54 vsb

Re: Из кубиков
Минусы такого подхода:

1. В проекте будет огромное количество лишнего незадействованного кода. Это увеличивает число потенциальных уязвимостей. Простой пример: ты заюзал какую-нибудь XML-библиотеку, чтобы распарсить XML из трёх тегов. А XML-библиотека поддерживает миллиард возможностей, включая, например, скачивание DTD из внешних источников. И тебе подсовывают XML с DTD, который абузит это скачивание и закачивает тебе вирус на сервер. А ты про это вообще можешь не подозревать, ты библиотеку подключил, три строчки для парсинга написал и ушёл дальше.

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

3. Некоторые библиотеки написаны плохими программистами и несут с собой баги и ухудшение производительности.

4. Затрудняюсь сформулировать, что тут не так, но когда видишь, как простой проект тянет за собой сотни мегабайтов библиотек, есть ощущение, что что-то где-то пошло не туда.

Во многом это всё относится не только к непосредственно используемым библиотекам, но и к их зависимостям. Подтянул ты одну библиотеку, та подтянула вторую, а вторая подтянула древний asm, который не работает на какой-нибудь Java 15 и так просто не обновляется. И получается, что ты залочен на Java 14, пока вторую библиотеку не пофиксит автор. А автор ушёл в кругосветку и шатал все эти ваши джавы, у него просветление.

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

Больше всего я люблю библиотеки, которые не тянут за собой другие зависимости, которые выполняют одну чётко очерченную задачу и неиспользуемый мной код никак не может заработать без моего ведома. Ну и которые написаны грамотно и давно.
Re: Из кубиков
Минусы такого подхода:

1. В проекте будет огромное количество лишнего незадействованного кода. Это увеличивает число потенциальных уязвимостей. Простой пример: ты заюзал какую-нибудь XML-библиотеку, чтобы распарсить XML из трёх тегов. А XML-библиотека поддерживает миллиард возможностей, включая, например, скачивание DTD из внешних источников. И тебе подсовывают XML с DTD, который абузит это скачивание и закачивает тебе вирус на сервер. А ты про это вообще можешь не подозревать, ты библиотеку подключил, три строчки для парсинга написал и ушёл дальше.

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

3. Некоторые библиотеки написаны плохими программистами и несут с собой баги и ухудшение производительности.

4. Затрудняюсь сформулировать, что тут не так, но когда видишь, как простой проект тянет за собой сотни мегабайтов библиотек, есть ощущение, что что-то где-то пошло не туда.

Во многом это всё относится не только к непосредственно используемым библиотекам, но и к их зависимостям. Подтянул ты одну библиотеку, та подтянула вторую, а вторая подтянула древний asm, который не работает на какой-нибудь Java 15 и так просто не обновляется. И получается, что ты залочен на Java 14, пока вторую библиотеку не пофиксит автор. А автор ушёл в кругосветку и шатал все эти ваши джавы, у него просветление. И в итоге тебе придётся править библиотеку 2. А эти правки могут быть сложней, чем изначально написать небольшое количество кода, который ты решил заменить большой библиотекой 1.

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

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