ЯГНІ виступає за Вам це не знадобиться. Це принцип у розробці програмного забезпечення, згідно з яким розробники повинні впроваджувати лише функції, необхідні для поточних вимог, і не додавати додаткові функції, які можуть знадобитися в майбутньому. Цей принцип базується на ідеї, що додавання непотрібних функцій може призвести до збільшення складності, довшого часу розробки та потенційно збільшення кількості помилок.
Принцип YAGNI тісно пов'язаний з ПОЦІЛУНОК принцип (Keep It Simple, Stupid), який виступає за простоту дизайну та уникнення непотрібної складності. Обидва принципи заохочують розробників зосередитися на створенні найпростішого рішення, яке відповідає поточним вимогам, а не намагатися передбачити та врахувати потенційні майбутні потреби.
Що таке YAGNI Principal
Зміст
- Що таке YAGNI?
- Як реалізується YAGNI?
- ЯГНІ проти інших принципів
- Приклади YAGNI
- Переваги YAGNI
- Поширені запитання YAGNI
Що таке YAGNI?
YAGNI — це принцип, який заохочує розробників уникати додавання функцій або функціональних можливостей до системи, доки вони не будуть явно потрібні. Він базується на передумові, що додавання непотрібних функцій може призвести до збільшення складності, довшого часу розробки та потенційно збільшення кількості помилок. Замість цього розробники повинні зосередитися на створенні найпростішого рішення, яке відповідає поточним вимогам.
YAGNI походить від екстремального програмування .
Чому розробник повинен дотримуватися принципу YAGNI?
Розробник повинен дотримуватися принципів YAGNI з таких причин:
- Вартість будівництва: Вартість створення — це кількість часу, зусиль і ресурсів, витрачених на створення функції чи рішення. Він включає все: від планування та кодування до тестування. Якщо ви будуєте щось, що виявляється непотрібним, вартість будівництва являє собою інвестиції, які ви зробили в його створення.
- Вартість затримки: Ціна затримки — це втрачена можливість або економічний вплив несвоєчасного надання функції чи рішення. Якщо ви витрачаєте час на менш важливі функції, ви можете відкласти впровадження більш важливих. Ця затримка може призвести до втрати можливостей для отримання прибутку чи інших переваг.
- Вартість перевезення: Вартість переносу — це постійні труднощі та додаткова робота, викликана наявністю певної функції у вашому програмному забезпеченні. Коли функція додає складності, це може ускладнити роботу над іншими частинами програмного забезпечення, призводячи до додаткових витрат часу та зусиль. Це як нести зайву вагу, намагаючись рухатися вперед.
- Вартість ремонту: Вартість ремонту, також відома як технічна заборгованість, — це поточні витрати, пов’язані з виправленням помилок, помилок або невдалих рішень, зроблених під час розробки функції. Якщо ви будуєте щось, що потребує коригувань пізніше, вирішення цих проблем потребує додаткового часу та ресурсів, подібно до виплати боргу.
Чому розробник повинен дотримуватися принципу YAGNI
розкосі дерева
Чому YAGNI важливий?
YAGNI важливий, оскільки він допомагає підтримувати цілеспрямованість та ефективність розробки програмного забезпечення. Впроваджуючи лише необхідні функції, розробники можуть не витрачати час і ресурси на непотрібні функції. Це може призвести до швидшого часу розробки, зменшення складності та зручнішої підтримки кодової бази.
Ідея YAGNI
Використовувати YAGNI як розробника — це все одно, що мати практичний посібник, який допоможе зосередити вашу роботу та працювати ефективно.
YAGNI Директор для розробників
1. Отримайте необхідні вимоги
Усі речі, які потрібні вашому проекту, відсортуйте їх у категорії обов’язкових і можуть зачекати. Це допоможе вам точно знати, над чим працювати. Незалежно від того, записуєте ви це на папері чи друкуєте на екрані, наявність списку допоможе вам упорядкувати.
помилка: не вдалося знайти або завантажити основний клас
2. Обговоріть зі своєю командою
Після цього настав час поговорити зі своєю командою. Поділіться з ними своїми планами та цілями. Це гарантує, що всі знаходяться на одній сторінці та розуміють, що потрібно зробити. Це як бути капітаном команди і стежити за тим, щоб усі грали в одну гру.
3. Проаналізуйте простий план рішення
Тепер, коли справа доходить до планування фактичної роботи, будьте простими. Розбийте свої великі цілі на менші завдання. Це допоможе вам уникнути перевантаження та гарантує, що ви зосередитесь на тому, що дійсно важливо. Подумайте про це як про створення покрокової дорожньої карти для свого проекту.
4. Відмовтеся, якщо це не підходить для рішення
Іноді ваша команда може придумати нові ідеї або захотіти додати додаткові речі. Хоча ці ідеї можуть бути крутими, ви повинні бути готові сказати «ні», якщо це не дрібне покращення. Сказати «ні» може бути важко, але це вбереже вас від того, щоб ви зійшли з курсу та не пропустили терміни.
5. Записуйте свій прогрес
Записуйте те, що ви зробили. Це як ведення рахунку в грі. Це допоможе вам зрозуміти, як далеко ви зайшли та чи рухаєтесь у правильному напрямку. Інструменти, які допомагають вам керувати цим процесом, схожі на табло для розробників, допомагаючи їм залишатися на шляху та надавати те, що дійсно потрібно клієнтам.
ЯГНІ проти інших принципів
YAGNI (You Aren’t Gonna Need It) — це принцип розробки програмного забезпечення, який рекомендує не додавати функціональні можливості, поки вони не знадобляться. Він контрастує з іншими принципами кількома способами:
- KISS (Keep It Simple, Stupid) : KISS — це принцип, який виступає за простоту дизайну та уникнення непотрібної складності. YAGNI доповнює KISS, радячи не додавати непотрібні функції, які можуть призвести до збільшення складності.
- СУХИЙ (не повторюйся) : DRY — це принцип, який підтримує повторне використання коду та уникнення дублювання. Тоді як DRY зосереджується на усуненні зайвого коду, YAGNI зосереджується на уникненні непотрібних функцій.
- ТВЕРДИЙ : SOLID — це набір принципів об’єктно-орієнтованого проектування, які сприяють модульному, зручному для обслуговування та масштабованому коду. У той час як принципи SOLID зосереджуються на дизайні та архітектурі коду, YAGNI зосереджується на функціональності коду.
- TDD (розробка, керована тестуванням) : TDD — це процес розробки, який передбачає написання тестів перед написанням коду. TDD зосереджується на написанні тестів для керування процесом розробки, тоді як YAGNI зосереджується на уникненні непотрібної функціональності.
- спритний : Agile — це набір принципів і практик для розробки програмного забезпечення, який наголошує на співпраці, гнучкості та відгуках клієнтів. YAGNI можна розглядати як гнучкий принцип, оскільки він спонукає розробників зосереджуватися на наданні найважливіших функцій і адаптуватися до мінливих вимог.
Ось порівняння YAGNI з іншими принципами розробки програмного забезпечення, заснованими на аспектах YAGNI, і те, як інші принципи їх вирішують:
| Аспект ЯГНІ | Як це вирішують інші принципи | Як YAGNI це вирішує |
|---|---|---|
| Простота | Інші принципи, такі як KISS (Keep It Simple, Stupid), також виступають за простоту дизайну та уникнення непотрібної складності. | YAGNI доповнює KISS, радячи не додавати непотрібні функції, які можуть призвести до збільшення складності. |
| Ефективність | Інші принципи, як-от гнучка та економічна розробка програмного забезпечення, наголошують на доставці цінності клієнту та усуненні відходів. | YAGNI зосереджується на наданні найпростішого рішення, яке відповідає поточним вимогам, що може призвести до швидших циклів розробки та більш ефективного використання ресурсів. |
| Гнучкість | Інші принципи, такі як Agile та Scrum, наголошують на співпраці, гнучкості та адаптації до мінливих вимог. | YAGNI заохочує розробників зосередитися на наданні найважливіших функцій і адаптуватися до мінливих вимог. |
| Зниження ризику | Інші принципи, такі як розробка на основі тестування (TDD) і безперервна інтеграція (CI), зосереджені на наданні високоякісного коду, який відповідає поточним вимогам. | YAGNI радить не додавати непотрібні функції, що може зменшити ризик появи помилок та інших проблем у кодовій базі. |
| Орієнтація на користувача | Інші принципи, такі як Agile та Lean Development Software, зосереджені на доставці цінності клієнту. | YAGNI допомагає зосередитися на першочерговому забезпеченні найважливіших функцій, які можуть забезпечити відповідність програмного забезпечення потребам і очікуванням користувача. |
| Економія коштів | Інші принципи, як-от гнучка та ощадлива розробка програмного забезпечення, зосереджені на усуненні відходів і забезпеченні цінності для клієнта. | YAGNI може призвести до економії коштів, уникаючи непотрібних функцій і зосереджуючись на наданні найважливіших функцій. |
| Ремонтопридатність | Інші принципи, такі як SOLID (єдина відповідальність, відкритість/закритість, заміна Liskov, сегрегація інтерфейсу, інверсія залежностей), зосереджені на дизайні та архітектурі коду. | YAGNI допомагає зберегти кодову базу простою та цілеспрямованою, полегшуючи її розуміння та підтримку. |
Загалом YAGNI доповнює інші принципи розробки програмного забезпечення, зосереджуючись на наданні найпростішого рішення, яке відповідає поточним вимогам і уникає непотрібної функціональності.
Приклади YAGNI
Ось декілька прикладів застосування YAGNI:
- Особливість Creep уникнути : команда розробників працює над веб-додатком. Спочатку вони планують включити функцію, яка дозволить користувачам створювати власні аватари та ділитися ними. Однак, розглянувши час і ресурси, необхідні для впровадження цієї функції, вони вирішують відкласти її, доки не отримають відгуки від користувачів, які вкажуть, що це необхідно.
- Зменшення складності : Розробник працює над мобільним додатком, який дозволяє користувачам відстежувати свої тренування. Спочатку вони планують включити функцію, яка автоматично генерує персоналізовані плани тренувань на основі фітнес-цілей користувача. Однак, враховуючи складність реалізації цієї функції та потенційний вплив на продуктивність програми, вони вирішили дотримуватися простішого підходу, який дозволяє користувачам створювати власні плани тренувань вручну.
- Розподіл ресурсів : команда розробників працює над платформою електронної комерції. Спочатку вони планують включити функцію, яка дозволить користувачам створювати списки бажань і ділитися ними з друзями. Однак, враховуючи обмежений час і ресурси, доступні для проекту, вони вирішили зосередитися на інших функціях, які є більш критичними для успіху платформи.
- Управління обсягом : команда розробників працює над програмним проектом для клієнта. Клієнт спочатку запитує кілька додаткових функцій, які, на його думку, будуть необхідні для успіху проекту. Однак, розглянувши бюджет і графік проекту, команда розробників вирішила обмежити обсяг проекту, щоб включити лише найважливіші функції.
- Розробка на основі зворотного зв'язку : команда розробників працює над новим програмним продуктом. Спочатку вони планують включити функцію, яка дозволить користувачам надавати відгук про продуктивність продукту. Однак, розглянувши потенційний вплив на зручність використання продукту та час, необхідний для впровадження цієї функції, вони вирішують відкласти її, доки не отримають відгуки від користувачів, які вказуватимуть на її необхідність.
Переваги YAGNI
Переваги YAGNI (You Aren’t Gonna Need It) у розробці програмного забезпечення численні та можуть мати значний вплив на процес розробки, якість кінцевого продукту та загальний успіх проекту. Ось деякі з основних переваг:
- Швидший розвиток : Зосереджуючись лише на тому, що потрібно в даний момент, розробники можуть не витрачати час на функції, які, можливо, ніколи не будуть використані. Це може призвести до швидших циклів розробки та більш ефективного використання ресурсів.
- Простота : непотрібні функції можуть ускладнити кодову базу, ускладнюючи її підтримку та розуміння. YAGNI допомагає зберегти кодову базу простою та цілеспрямованою, полегшуючи роботу розробників.
- Гнучкість : Уникаючи непотрібних функцій, розробники можуть підтримувати кодову базу гнучкою та адаптованою до змін. Це може бути особливо важливим у динамічному середовищі, де вимоги можуть часто змінюватися.
- Знижений ризик : непотрібні функції можуть викликати помилки та інші проблеми в кодовій базі. Уникаючи цих функцій, розробники можуть зменшити ризик появи помилок та інших проблем у кодовій базі.
- Орієнтація на користувача : YAGNI допомагає зосередитися на доставці цінності для кінцевого користувача. Впроваджуючи лише ті функції, які необхідні користувачеві, розробники можуть гарантувати, що програмне забезпечення відповідає потребам і очікуванням користувача.
- Економія коштів : Уникаючи непотрібних функцій, розробники можуть заощадити час і ресурси, які в іншому випадку були б витрачені на впровадження та підтримку цих функцій. Це може призвести до економії коштів організації.
- Покращена ремонтопридатність : простішу кодову базу легше зрозуміти та підтримувати, тому розробникам легше вносити зміни та виправляти помилки.
- Кращий досвід користувача : Зосереджуючись на першочерговому забезпеченні найважливіших функцій, розробники можуть гарантувати, що користувачі швидше отримають потрібну функціональність, що забезпечить кращий загальний досвід роботи.
Висновок
видалення останнього коміту git
Принцип YAGNI може бути цінним у різних аспектах розробки програмного забезпечення. Це сприяє простоті, зменшує непотрібну складність і допомагає командам зосередитися на наданні основних функцій. Розглядаючи YAGNI, розробники можуть підвищити продуктивність, зручність обслуговування та загальний успіх проекту. Однак важливо знайти баланс і не сприймати YAGNI як виправдання для нехтування передбаченнями чи архітектурними міркуваннями.
Поширені запитання YAGNI
Q1. Яка критика YAGNI?
Деякі люди кажуть, що YAGNI має недоліки. Вони стверджують, що якщо ви думаєте лише про те, що вам потрібно зараз, і ігноруєте потенційні майбутні потреби, вам, можливо, доведеться переробляти багато роботи пізніше, коли з’являться нові вимоги.
Q2. Які правила YAGNI?
Вам це не знадобиться. YAGNI — це принцип розробки програмного забезпечення, який походить від екстремального програмування (XP), який стверджує, що програміст не повинен додавати додаткові функції, поки це не буде необхідно.
Q3. Які аргументи на користь принципу ЯГНІ?
Уникає розповзання функцій, що означає, що розробник не використовуватиме функції, які навряд чи використовуватимуться в майбутньому.
Q4. Яка різниця між SOLID і YAGNI?
SOLID очікує, що ви матимете уявлення, навіть якщо воно незначне, про те, як код може змінитися в майбутньому, особливо з принципом єдиної відповідальності (SRP). Це як сподіватися, що ви можете передбачити деякі речі. З іншого боку, YAGNI припускає, що в більшості випадків ви не знаєте, куди піде код у майбутньому. Це як трохи сумніватися в нашій здатності передбачати.