Разделяй и владей
„Разделяй и владей“ е максима, която се приписва на Филип Македонски и е следвана стриктно от Юлий Цезар и Наполеон Бонапард. Тя е валидна и в програмирането. Със сигурност ще чуете, че модулизиран код се поддържа лесно. Обратното – трупане на всичкия код на едно място, често пъти се оприличава на „спагети“.
goto
= функции
Оригинално терминът „спагети код“ идва от goto
инструкции в някои по-стари езици за програмиране. Навремето goto
е бил единственият начин да се върнеш на старо „парче“ код и то да се изпълни наново. В противен случай не е можело да бъдат реализирани цикли.
Модерните езици за програмиране обаче позволяват за извикване на функции и имат купища методологии за преизползване на код. Въпреки всичко, това не означава, че автоматично кодът ви ще е добре капсулован.
Един сайт (или програма) винаги се състои от множество функционалности. Възможно е те понякога да си взаимодействат, но принципно са разделени. Ако нямаме модули в кода си, а само хвърчащи функции, които се викат една друга – пак се получават едни спагети. Просто вместо goto
викаме функция. Крайният резултат обаче е един и същ.
„Физическо“ разделяне на кода
Правилното оформяне и модулизиране на код често пъти се подпомага от физическото му разделяне във файлове. При много сайтове ще видите заредени по няколко .CSS или .JS файла. Най-малкото – някои идват от plugin-и.
От една страна това води до ползи по поддръжка на кода. От друга обаче се зареждат множество файлове на страницата ни. А всеки файл кара браузър да направи нова връзка към сървъра (игнорираме HTTP2 протокол). Зареждането на 10 файла по 10KB става по-бавно от зареждането на 1 файл от 100KB. И така излиза, че е най-добре всичко да бъде в един файл.
Как да се справим тогава, с поддръжката на този огромен файл?
От няколко години вече е като стандарт статичните файлове в един сайт да минават някаква обработка. В следствие на нея може да се ползва по-модерен синтаксис. Той се преправя в код, който се поддържа от всички браузъри и позволява няколко файла да се събират в един.
Помощните средства за това за Task Runners и Bundlers. Двата типа инструменти може да се ползват по отделно или да се свържат.