KISS - принцип проектування, що містить всі інші принципи проектування

Постараюся пояснити сутність принципу проектування KISS просто і одночасно дуже докладно. KISS — це дуже загальний і абстрактний принцип проектування, який містить в собі практично всі інші принципи проектування. Принципи проектування описують як писати «хороший» код. Однак що значить хороший код? Деякі вважають, що це код, який виконується максимально швидко, деякі — що це код, в якому задіяно якомога більше патернів проектування… Але вірна відповідь лежить на поверхні. Код — це інформація в чистому вигляді. А основні критерії цінності інформації — це 1)достовірність 2)доступність 3)зрозумілість. Те, чому важливі достовірністю і доступність — очевидно. Від коду немає користі, якщо він працює з помилками або якщо сервер з додатком «лежить». Чому ж важлива зрозумілість коду? В зрозумілому коді простіше шукати помилки, простіше його змінювати, допрацьовувати і супроводжувати. Отже, зрозумілість — основна цінність, до якої повинен прагнути програміст. Однак тут є одна неув'язочка. Справа в тому, що зрозумілість — річ суто суб'єктивна. Потрібен якийсь більш об'єктивний критерій зрозумілості. І цей критерій — простота. Дійсно, просте додаток більш зрозуміле, ніж складне. Однак простоти досягти складно. Ось що пише Пітер Гудвін у книзі «Ремесло програміста»:
Якщо проект простий, його легко зрозуміти… Розробити простий проект не так легко. Для цього потрібно час. Для будь-якої скільки-небудь складної програми остаточне рішення виходить в результаті аналізу величезного обсягу інформації. Коли код добре спроектований, здається, що він не міг бути іншим, проте можливо, що його простота досягнута в результаті напруженої розумової праці (і великого обсягу рефакторінгу). Зробити просту річ складно. Якщо структура коду здається очевидною, не треба думати, що це далося без праці.
Отже, принцип проектування KISS (keep it simple and straightforward) проголошує, що простота коду — понад усе, тому що простий код — найбільш зрозумілий.
Практично всі принципи проектування спрямовані на досягнення зрозумілості коду. Порушуючи який-небудь принцип проектування, ви зменшуєте зрозумілість коду. Незрозумілий код автоматично викликає у людини відчуття того, що код складний, так як його складно розуміти і модифікувати. При порушенні будь-якого з цих принципів також порушується і принцип KISS. Тому можна говорити, що KISS включає майже всі інші принципи проектування.
Патерни проектування описують найбільш вдалі, прості і зрозумілі рішення деяких проблем. Якщо ви використовуєте шаблон проектування там, де немає проблеми, яку вирішує даний патерн — то ви порушуєте KISS, вносячи непотрібні ускладнення в код. Якщо ви НЕ використовуєте шаблон проектування там, де є проблема, відповідна паттерну — то ви знову-таки порушуєте KISS, роблячи код складніше, ніж він міг би бути.

На мій погляд, принцип KISS може бути корисний лише для початківців проектувальників, які не знають або не розуміють основних принципів проектування. KISS захищає від невірного використання принципів проектування і патернів. Оскільки принципи і патерни призначені для збільшення зрозумілості коду, то їх правильне використання може призвести до зменшення зрозумілості коду. Однак якщо ви неправильно розумієте принцип проектування (наприклад, витлумачуєте «не плодіть зайвих сутностей» як «плодіть як можна менше сутностей»), або дотримуючись один принцип порушуєте десяток інших, то KISS може стати для вас надійним подушкою безпеки. В інших випадках від KISS-а мало користі, тому що він занадто загальний і абстрактний. Інші ж принципи більш конкретні і містять більш явні шляху до досягнення зрозумілості і простоти коду.

У зв'язку з тим, що уявлення людей про таке поняття як «простота» можуть різнитися, набули широкого поширення наступна омани щодо KISS-a:
Помилка 1. Якщо вважати, що простий код — це код, який найпростіше написати, то можна витлумачити, що принцип KISS закликає писати перше, що спаде на думку, взагалі не замислюючись про проектуванні.
Помилка 2. Якщо вважати, що простий код — це код, для написання якого потрібно якомога менше знань, то можна витлумачити, що принцип KISS закликає не використовувати патерни проектування.

Під простотою ж в даному випадку слід розуміти не складний, позбавлена штучності, самий природний, не важкий, легко доступний для розуміння.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.