Б?бл?отека чи св?й код
Мен? потр?бна всього одна функц?я
Ви коли-небудь п?дключали lodash, або будь-яку ?ншу б?бл?отеку, використовуючи з не? одну-?дину функц?ю??Може, прост?ше написати ту функц?ю самост?йно, тим паче якщо я вир?шив цю проблему на чистому js?
Перш за все, на це питання нема? однозначно? в?дпов?д?, якщо ви чека?те саме на не?. В кожному конкретному випадку потр?бно враховувати багацько фактор?в, починаючи з характеру коду ? зак?нчуючи умовами запуску, тобто де ? як запуска?ться програма. Про це п?зн?ше.
Розм?р коду:
З одного боку, розм?р коду майже не ма? значення. Плюс-м?нус мегабайт, або нав?ть десять мегабайт?в зовс?м н?чого не вир?шують. Сучасне програмне забезпечення волод?? величезними ресурсами, вага яких порядком перевищу? розм?р будь-яко? б?бл?отеки. Нав?ть з урахуванням цього б?бл?отека, яка ма? просту функц?ональн?сть, займа? багато м?сця.
На фроненд? все трохи складн?ше, але тепер все зводиться до того, як орган?зована б?бл?отека. Якщо правильно налаштований експорт, то в к?нцевому вар?ант?(до прикладу, з?браному вебпаком) будуть т?льки т? функц??, як? д?йсно використовуються. ? це дуже мало.
Залежност?:
Деяк? розробники м?н?м?зують к?льк?сть залежностей(сторонн?х б?бл?отек) в сво?му код?. Маленьких функц?й тут вже недостатньо, складн? про?кти можуть мати сво? р?шення з немаленькою к?льк?стю готових ?нструмент?в.
Тут нема чого сказати. Залежност? - це добре, якщо вони дозволяють зекономити час розробника ? витратити б?льше часу на лог?ку додатку, н?ж на задач? ?нфраструктури.
В чому ж переваги?
Не вс? б?бл?отеки однаково корисн?. Часто ? к?лька основних проблем, як? погано реал?зован? в сам?й мов? програмування. До них в?дносяться робота з колекц?ями, робота з? строками ? датами. Окр?м цього, ?снують р?зноман?тн? б?льш конкретн? частини, як? необх?дно розширити. У цих випадках б?бл?отека повинна бути додана як залежн?сть нав?ть для одн??? функц??.
Як правило, там, де потр?бна одна функц?я, незабаром виника? необх?дн?сть в ?нш?й. Не розум?ючи цього, одна людина напише одну функц?ю, ?нша напише ?? в ?ншому м?сц?, ? нема? впевненост?, що вони знають про вже написан? р?шення один одного. Ця ситуац?я швидко перетворю?ться з "занадто рано" на "занадто п?зно", коли в код? багато функц?й, доступних в кожн?й б?бл?отец?. Ба б?льше, коли програм?сти переходять в ?нш? про?кти, те ж саме почина?ться ? там. У результат? стандартн? функц??, розкидан? по р?зних про?ктах, написан? р?зними людьми, м?стять помилки, не мають документац?? ? зазвичай погано або зовс?м не тестуються.
Ваш власний код не буде так ретельно протестований и задокументований, як в популярних б?бл?отеках. Спробуйте в?дкрити lodash ? подив?ться, наск?льки об??мною ? документац?я. Тут видно ще одну перевагу таких б?бл?отек. Оск?льки б?бл?отека так широко використову?ться и стандартизована, б?льш?сть розробник?в знають, як з нею працювати. Це означа?, що код проекту буде б?льш зрозум?лий для вс?х, хто з ним працю?.
? ще одне ц?кава , але не очевидна перевага використання таких б?бл?отек. Б?бл?отеки м?стять багато функц?й, як? складно зрозум?ти самост?йно. Використовуючи ц? б?бл?отеки, розробники можуть п?двищити св?й особистий р?вень знань ? навчитися вир?шувати б?льш?сть стандартних проблем з м?н?мальною к?льк?стю коду ? правильними абстракц?ями. Зв?сно, ц? функц?? необх?дно пер?одично передивлятися. Регулярно трапля?ться, що студенти винаходять велосипед, тому що не знають про стандартн? р?шення. Окр?м цього, коли ми говоримо, що потр?бна т?льки одна функц?я, то виявля?ться, що насправд? ?х дек?лька, ? розробник просто може не знати про них.
Для ?нших р?дк?сних б?бл?отек ситуац?я б?льш складна ? не завжди зрозум?ло, чи потр?бно тягнути з б?бл?отекою. Ключ до прийняття такого р?шення- реал?стичн?сть, а не завершен?сть.
?нод? ? сенс витягнути код яко?сь одн??? функц?? з готово? б?бл?отеки до проекту, н?ж п?дключати ? ?мпортувати ?? або створювати свою
Директор – TR Communication
1 年А можна додати приклади ?з практики. Наприклад, як? б?бл?отеки однозначно потр?бн?? (Не знаю як точн?ше сформулювати питання)
JavaScript Technical Lead - JS | TS | React | Vue | Node
1 年П?дписуйся та будь в курс? останн?х новин Front-end технолог?й https://t.me/VS_FRONTEND