Е, заглавието е доста подвеждащо. То кой ли не обича целувките (kiss). Този KISS обаче, заедно с другите две думички в списъка, е изписан с главни букви, което логично ще ви накара да си помислите, че е абревиатура. Не, това не са и рокгрупи, поне не за това ще стане дума на следващите редове.
Заедно със SOLID принципите (за които подробно ще ви разкажем при следваща среща), KISS, DRY и YAGNI са онези базови идеи, с които е добре да започне всеки, поел по пътя на програмирането. Те са и значително по-прости – и като концепция, и като практическо приложение, така че няма нито една причина да не побързате да ги научите колкото може по-бързо. Вярваме, че следващите 1000 думи ще са напълно достатъчни за това.
Днес има толкова много програмни езици (а ако тепърва избирате кой от тях да започнете за учите – четете тук). И все пак, тези правила важат за всички тях. А и огромен процент от софтуерните инженери днес изкарват хляба си с компютърни езици, базирани на С (Защо е така? Ето защо.). При тях с пълна сила важат трите абревиатури, които споменахме. И така, нека една по една да ги разгърнем – и като думички, и като значение зад тях.
Програмистка целувка
KISS, или с други думи, Keep It Simple, Stupid. Остави го просто, тъпо дори.
Да, програмирането е страшно увличащо занимание и много често имаш желанието да направиш нещата „по-така“. Неслучайно сред по-опитните програмисти винаги го има малко или повече стремежа да се покажеш, да изпъкнеш, да докажеш, че си най-добрият. Ако не вярвате, влезте за кратко в някой от фейсбук форумите за програмисти и бързо ще се убедите.
Тук обаче си говорим за кода. Това е и идеята на този принцип. Ако възможно най-простото решение на една задача работи, това е. Не бива да го усложняваме, допълваме, украсяваме. Да го правим по-заплетено, демонстративно и… самоцелно.
От една страна това е важно, защото максимално простият код крие и най-малко опасности от бъгове. И дори те да се появят, е много, много по-лесно да бъдат открити в 20 реда код, отколкото в 2000.
Без комплекси
Освен това, програмирането през последните десетилетия е все повече отборен спорт. Повечето специалисти прекарват значително по-дълго време в това да гледат, разчитат и променят вече написан код, отколкото да създават чисто нови редове.
Ненужната комплексност, излишната сложност на кода със сигурност е нещо, което може само да ви навреди, но не и да ви помогне в работата. Затова и немалка част от времето в работа на програмистите е редно да минава в рефакториране. Както стана дума, обикновено кодът в отделните файлове се пише на части, променя се, добавя се нещо или се променя друго. Понякога в един момент това прави редовете компютърен език нечетими, създава допълнителни бъгове. И идва време да приложим KISS принципа, да отделим достатъчно време, за да попренапишем всичко, така че да е максимално просто. Просто съвършено.
Остани на сухо
Какво ли пък е това DRY? Да, хубаво е компютрите да стоят на сухо, иначе може да прехвърчат искри (буквални). Тук обаче съкращението идва от Don’t Repeat Yourself. Не се повтаряй.
Сигурно и вие имате в родатата си някой далечен чичо, който на всяка фамилна среща разказва една и съща история с едни и същи думи и подробности и така 30 години. Еми, досадно е. Но когато говорим за код е и излишно, и вредно.
Основополагащо правило е да избягваме повторенията, без, разбира се, да се вманиачаваме. Колко точно е добре да задълбаваме, зависи и от анализа на кода ни на базата на споменатите SOLID принципи, но, както стана дума, за тях ще поговорим подробно нататък. Уф, ето че и ние се повторихме.
Не се повтаряй. Не се повтаряй.
И така – усещате, че трябва да хванете и да копирате едни 10-20-100 реда код. Пръстите механично цъкат Ctrl + C, Ctrl + V, работата потръгва, функционалността работи. И изведнъж имате едни огромни хиляди редове код, които правят едно и също. Едно на ръка, че файлът с код бързо става доста по-обемен и труден за поддържане във всеки един смисъл. И друго – ако откриете малка грешчица в името на променлива, дребен бъг, хрумва ви да подобрите нещо и… пак трябва да включвате запаметената в пръстите ви комбинация, този път Ctrl + F, за да намерите всеки от копираните редове и да смените навсякъде дреболията. После в бързината объркате някоя буква… Уж сте искали да спестите време, а става точно обратното.
Затова е толкова просто, както и с другите принципи, които събрахме тук. Трябва ли да копирате код, особено повечко, просто го изведете в отделна функция или променлива. И навсякъде, където ви е нужен, я викайте с подходящите променливи, за да ви свърши работата. Логично, нали?
Я, агне?
Не, нищо общо с „агне“, казано на някой от по-меките български говори. YAGNI също може да асоциираме с фамилен пример. Със сигурност имате по-възрастни роднини, които пък си имат килер, пълен с празни кутии, неработещи електроуреди… Да, едно време никак не обичаха да изхвърлят каквото и да било.
Понякога обаче просто знаеш, че нещо няма да ти е необходимо и е време да се разделиш с него. Точно това има да ни каже YAGNI – You Ain’t Gonna Need It. Това няма да ти трябва!
Пак се връщаме оттам, откъдето започнахме – с основната черта на програмирането и мнозина от програмистите – да се изкушават да правят нещата по красивия, сложния, модерния начин, всичко да става „яко“, fancy.
И после изведнъж се оказва, че съвършената алгоритмична функция… просто не ти трябва. Откриваш прост начин, но пък си я оставяш, ей тъй, за зор-заман, ако пък нещо се промени и пак се окаже необходима…
Гробище за код
И така в някакъв момент в проекта се трупат ли, трупат стотици редове неизползван код, които заемат място, затрудняват четимостта и… никога не идва време да ни дотрябват.
„Мъртвият код“ има само едно място – в коша. Това е и принципът YAGNI. Нищо сложно, нали? Впрочем, и трите принципа със сигурност могат да са полезни в доста повече страни от живота, отколкото само и единствено в програмирането. Там обаче са най-доказани и ясно формулирани, спокойно можете да питате когото искате сред по-опитните програмисти около вас.
Пате на сбогуване
И за финал – малък бонус. След като четете този материал, значи най-вероятно сте сравнително в началото на своя път в програмирането, или планирате да го започнете.
Може би сте видели патето най-отгоре, а и другаде ви е попадала гумената играчка за баня като нещо, асоцииращо се с програмирането.
Това идва от колкото забавната, толкова и полезна понякога концепция за „дебъгването с гумено пате“ – Rubber Duck Debugging. Идеята? Човек често „запецва“ на някой проблем в толкова абстрактна област като програмирането. Тогава пътят да се измъкне е… да формулира нещата така, че да може да ги разкаже и на гуменото пате, което никак не разбира от софтуер. Да обясни кода си спокойно, ред по ред. Един вид – да погледне някак отстрани на въпроса, да опрости проблема и да го реши.
Стана ви интересно? Програмирането наистина е много „зарибяващо“ занимание, което, освен всичко друго, може да ви осигури и добри доходи. Грабвайте гуменото пате и захващайте курсовете по езика, който ще изберете. После ви чакаме ние с хостинга (за начало дори напълно безплатен!), чрез който да покажете на света на какво сте способни.