Всім привіт! Я розпочинаю серію дописів на тему принципів та дизайн патернів у програмуванні. Мета цього, в першу чергу, особисто мені, засвоїти інформацію на кращому рівні.
Звідки взявся цей термін?
Вважається, що він був придуманий американським інженером Келлі Джонсоном. Використовуюється в армії США та сфері розробки ПЗ.
В чому суть?
KISS є абревіатурою для "Keep it simple, stupid", що перекладається як "Давай простіше, дурню". Зараз використовуюється багато різних варіації цього терміну по типу "keep it simple and straightforward", "keep it simple, silly", "keep it short and simple". Однак всі вони несуть у собі одну думку - рішення має бути настільки простим, як це можливо. Ні більше ні менше.
А що значить це - "простіше"?
Деякі можуть подумати, що під цим поняттям мається на увазі банальний (легкий) код.
Попри це, він закликає до того, щоб уникати зайвої складності та використовувати лише ті техніки, які справді необхідні для досягнення поставленої мети.
Переваги
- Зрозумілість: простий код легше читається як і самим розробником, так і колегами. Це сприяє покращенню співпраці.
- Підтримка та масштабування: Простий код потребує менше часу та зусиль для підтримки. Його легше вдосконалювати та виправляти помилки.
Приклад
C#
// Поганий підхід (не KISS)
public string CheckIfNumberIsEven(int number)
{
if (number % 2 == 0)
{
return "Число парне";
}
else
{
return "Число непарне";
}
}
// Кращий підхід (KISS)
public string CheckIfNumberIsEven(int number)
{
return (number % 2 == 0) ? "Число парне" : "Число непарне";
}
Післямова
Вважаю, що KISS є чудовим принципом, і світ був би кращий, якби виходило його частіше застосовувати. Головне не переплутати з надмірним спрощенням :)
Дякую усім за увагу. Чекаю на відгуки!
Топ коментарі (8)
Є відчуття, що у вашому прикладі навпаки, KISS це не про менше символів, а більш легкий код. Я б сказав що в цьому прикладі if else більше підходить під KISS, тому що його легше прочитати насправді, а тернарний оператор часто ускладнює простий код
Дякую за відгук! Особисто для мене легше читаються тернарні оператори, напевно невдалий приклад підібрала 😅
мені і так, і так норм в цьому прикладі
просто якби KISS був про менше строк, тоді з таким же успіхом можна було б написати
і це будо практично теж саме, що і тернарний оператор), але цей код погано читається
тому все ж таки KISS про легкість коду, в тому числі його читання
в прикладі з if else ми можемо прочитати на ходу прямо те що выдбувається в коді, навіть на замислюючись і все буде зрозуміло
а в прикладі з тернарним оператором ми повинні зупинись і осмислити написане, додати цей if та else подумки
взагалі я би цей код написав так:
або так, на випадок несподіваних ситуацій
я б радив почитати тут, там як раз схожі приклади описуються як bad practice:
code-specialist.com/code-principle...
bytehide.com/blog/kiss-principle-c...
без негативу, якщо що
P.S. Видалик минулу відповідь, тому що криво вставив код
Ох, знову пару моментів криво, дуже треба працююча кнопка редагування)
Лінки
code-specialist.com/code-principle...
bytehide.com/blog/kiss-principle-c...
Дуже дякую, обовʼязково почитаю. Я вирішила писати тут пости, як раз для того, щоб перевірити чи все правильно зрозуміла)) Чудово що є такі люди як ви, які готові пояснювати 😊
Цікава темка. Дякую автору)
Бажаю успіхів з наступними публікаціями
Дякую!