KISS, DRY и YAGNI. Защо ги обичат програмистите?

от | юни 10, 2021 | Тенденции

Е, заглавието е доста подвеждащо. То кой ли не обича целувките (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. Идеята? Човек често „запецва“ на някой проблем в толкова абстрактна област като програмирането. Тогава пътят да се измъкне е… да формулира нещата така, че да може да ги разкаже и на гуменото пате, което никак не разбира от софтуер. Да обясни кода си спокойно, ред по ред. Един вид – да погледне някак отстрани на въпроса, да опрости проблема и да го реши.

Стана ви интересно? Програмирането наистина е много „зарибяващо“ занимание, което, освен всичко друго, може да ви осигури и добри доходи. Грабвайте гуменото пате и захващайте курсовете по езика, който ще изберете. После ви чакаме ние с хостинга (за начало дори напълно безплатен!), чрез който да покажете на света на какво сте способни.

<a href="https://www.zettahost.bg/author/georgik/" target="_self">Георги Караманев</a>

Георги Караманев

Георги е журналист, писател и Front-end програмист – част от екипа на ZETTAHOST.bg. Има повече от 15 години опит в подготвянето на публикации на технологична тематика за Списание 8, в. „24 часа“ и други медии. През 2019 г. и 2021 г. получи наградите в категория „Технологии и иновации“ от конкурса на Dir.bg за чиста журналистика Web Report.
Последвайте ни

Най-нови публикации:

ChatGPT: 6 ползи от изкуствения интелект за онлайн бизнеса

ChatGPT може да се превърне в тайното оръжие за вашия онлайн бизнес. От изготвянето на съдържание за сайта, през анализа на данни до съставянето на бизнес план, платформата предлага различни решения, а ние ви представихме 6 от основните ползи на изкуствения интелект.

Личен сайт безплатно!

Регистрирай се безплатно и си направи сайт още днес.

Безплатната хостинг услуга на ZETTAHOST.bg няма скрити такси и изисквания за ползване.

Безплатен хостинг

Pin It on Pinterest

Share This