Куток

Обкладинка для допису Принцип KISS: стільки, скільки потрібно
Nar1nda
Nar1nda

Додано

Принцип KISS: стільки, скільки потрібно

Всім привіт! Я розпочинаю серію дописів на тему принципів та дизайн патернів у програмуванні. Мета цього, в першу чергу, особисто мені, засвоїти інформацію на кращому рівні.


Звідки взявся цей термін?

Вважається, що він був придуманий американським інженером Келлі Джонсоном. Використовуюється в армії США та сфері розробки ПЗ.

В чому суть?

KISS є абревіатурою для "Keep it simple, stupid", що перекладається як "Давай простіше, дурню". Зараз використовуюється багато різних варіації цього терміну по типу "keep it simple and straightforward", "keep it simple, silly", "keep it short and simple". Однак всі вони несуть у собі одну думку - рішення має бути настільки простим, як це можливо. Ні більше ні менше.

Not a KISS example!

А що значить це - "простіше"?

Деякі можуть подумати, що під цим поняттям мається на увазі банальний (легкий) код.
Попри це, він закликає до того, щоб уникати зайвої складності та використовувати лише ті техніки, які справді необхідні для досягнення поставленої мети.

Переваги

  • Зрозумілість: простий код легше читається як і самим розробником, так і колегами. Це сприяє покращенню співпраці.
  • Підтримка та масштабування: Простий код потребує менше часу та зусиль для підтримки. Його легше вдосконалювати та виправляти помилки.

KISS example

Приклад

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)

Звернути
 
bonamors_7efa2872b0873ccc profile image
BonaMors

Є відчуття, що у вашому прикладі навпаки, KISS це не про менше символів, а більш легкий код. Я б сказав що в цьому прикладі if else більше підходить під KISS, тому що його легше прочитати насправді, а тернарний оператор часто ускладнює простий код

Звернути
 
nar1nda profile image
Nar1nda

Дякую за відгук! Особисто для мене легше читаються тернарні оператори, напевно невдалий приклад підібрала 😅

Звернути
 
bonamors_7efa2872b0873ccc profile image
BonaMors

мені і так, і так норм в цьому прикладі

просто якби KISS був про менше строк, тоді з таким же успіхом можна було б написати

if (number % 2 == 0) return "Число парне"; else return "Число непарне";
Увімкніть повноекранний режим Вийти з повноекранного режиму

і це будо практично теж саме, що і тернарний оператор), але цей код погано читається

тому все ж таки KISS про легкість коду, в тому числі його читання

в прикладі з if else ми можемо прочитати на ходу прямо те що выдбувається в коді, навіть на замислюючись і все буде зрозуміло

а в прикладі з тернарним оператором ми повинні зупинись і осмислити написане, додати цей if та else подумки

return IF (number % 2 == 0) ? RETURN "Число парне" :  ELSE RETURN "Число непарне";
Увімкніть повноекранний режим Вийти з повноекранного режиму

взагалі я би цей код написав так:

public string CheckIfNumberIsEven(int number)
{
    if (number % 2 == 0) {
        return "Число парне";
    }

    return "Число непарне";
}
Увімкніть повноекранний режим Вийти з повноекранного режиму

або так, на випадок несподіваних ситуацій

public string CheckIfNumberIsEven(int number)
{
    if (number % 2 == 0) {
        return "Число парне";
    } else {
        return "Число непарне";
    }

    return "Щось пішло не так";
}
Увімкніть повноекранний режим Вийти з повноекранного режиму

я б радив почитати тут, там як раз схожі приклади описуються як bad practice:
code-specialist.com/code-principle...
bytehide.com/blog/kiss-principle-c...

без негативу, якщо що

P.S. Видалик минулу відповідь, тому що криво вставив код

Тред Тред
 
bonamors_7efa2872b0873ccc profile image
BonaMors

Ох, знову пару моментів криво, дуже треба працююча кнопка редагування)

Лінки
code-specialist.com/code-principle...
bytehide.com/blog/kiss-principle-c...

Тред Тред
 
nar1nda profile image
Nar1nda

Дуже дякую, обовʼязково почитаю. Я вирішила писати тут пости, як раз для того, щоб перевірити чи все правильно зрозуміла)) Чудово що є такі люди як ви, які готові пояснювати 😊

Звернути
 
Sloan, the sloth mascot
Коментар видалено
Звернути
 
yurii_kolibroda_282ef6173 profile image
Yurii Kolibroda

Цікава темка. Дякую автору)

Бажаю успіхів з наступними публікаціями

Звернути
 
nar1nda profile image
Nar1nda

Дякую!

Куток

Підписуйтеся на наші соціальні мережі:
Telegram
Twitter
Facebook


Тепер у нас також є Youtube канал!