logo

Czym jest zasada YAGNI (nie będziesz tego potrzebować)?

YAGNI oznacza Nie będziesz tego potrzebować. Jest to zasada tworzenia oprogramowania, która sugeruje, że programiści powinni wdrażać tylko te funkcje, które są niezbędne do spełnienia bieżących wymagań i nie dodawać żadnych dodatkowych funkcji, które mogą być potrzebne w przyszłości. Zasada ta opiera się na założeniu, że dodanie niepotrzebnych funkcji może prowadzić do większej złożoności, wydłużenia czasu programowania i potencjalnie większej liczby błędów.

Zasada YAGNI jest ściśle powiązana z POCAŁUNEK zasada (Keep It Simple, Stupid), która opowiada się za prostotą projektowania i unikaniem niepotrzebnej złożoności. Obie zasady zachęcają programistów do skupienia się na dostarczaniu najprostszego rozwiązania spełniającego bieżące wymagania, zamiast próbować przewidywać i uwzględniać potencjalne przyszłe potrzeby.



Co to jest YAGNI Dyrektor

Spis treści

Co to jest YAGNI?

YAGNI to zasada, która zachęca programistów do unikania dodawania funkcji lub funkcjonalności do systemu, dopóki nie są one wyraźnie wymagane. Opiera się na założeniu, że dodanie niepotrzebnych funkcji może prowadzić do zwiększenia złożoności, wydłużenia czasu programowania i potencjalnie większej liczby błędów. Zamiast tego programiści powinni skupić się na dostarczeniu najprostszego rozwiązania spełniającego aktualne wymagania.



YAGNI wywodzi się z programowania ekstremalnego .

Dlaczego deweloper powinien kierować się zasadą YAGNI?

Deweloper powinien przestrzegać zasad YAGNI z następujących powodów:

  • Koszt budowy: Koszt kompilacji to ilość czasu, wysiłku i zasobów wydanych na utworzenie funkcji lub rozwiązania. Obejmuje wszystko, od planowania i kodowania po testowanie. Jeśli zbudujesz coś, co okaże się niepotrzebne, koszt budowy odzwierciedla inwestycję poczynioną w jego stworzenie.
  • Koszt opóźnienia: Koszt opóźnienia to stracona szansa lub skutki ekonomiczne nieterminowego dostarczenia funkcji lub rozwiązania. Jeśli poświęcisz czas na mniej krytyczne funkcje, możesz opóźnić wdrożenie ważniejszych. Opóźnienie to może skutkować utratą szans na uzyskanie przychodów lub innych korzyści.
  • Koszt transportu: Koszt przeniesienia to ciągłe trudności i dodatkowa praca spowodowana posiadaniem określonej funkcji w oprogramowaniu. Gdy funkcja zwiększa złożoność, może utrudnić pracę nad innymi częściami oprogramowania, co wymaga dodatkowego czasu i wysiłku. To jak noszenie dodatkowego ciężaru, gdy próbujesz iść do przodu.
  • Koszt naprawy: Koszt naprawy, znany również jako dług techniczny, to bieżący koszt związany z naprawianiem błędów, błędów lub złych wyborów dokonanych podczas opracowywania funkcji. Jeśli zbudujesz coś, co wymaga później poprawek, zajęcie się tymi problemami wymaga dodatkowego czasu i zasobów, podobnie jak spłata długu.

Dlaczego programista powinien podążać za dyrektorem YAGNI



10 potęga 6

Dlaczego YAGNI jest ważne?

YAGNI jest ważny, ponieważ pomaga w skupieniu i wydajności tworzenia oprogramowania. Implementując tylko te funkcje, które są niezbędne, programiści mogą uniknąć marnowania czasu i zasobów na niepotrzebne funkcjonalności. Może to prowadzić do skrócenia czasu programowania, zmniejszenia złożoności i łatwiejszej w utrzymaniu bazy kodu.

Idea stojąca za YAGNI

Korzystanie z YAGNI jako programisty to jak posiadanie praktycznego przewodnika, dzięki któremu Twoja praca będzie skupiona i wydajna.

YAGNI Dyrektor ds. programistów

1. Uzyskaj niezbędne wymagania

Wszystkie rzeczy, których potrzebuje Twój projekt, posortuj je według kategorii „must-have” i mogą poczekać. Dzięki temu wiesz dokładnie, nad czym pracować. Niezależnie od tego, czy zapiszesz to na papierze, czy napiszesz na ekranie, posiadanie listy pomoże Ci zachować porządek.

ciąg Java zamień

2. Porozmawiaj ze swoim zespołem

Potem nadejdzie czas na rozmowę ze swoim zespołem. Podziel się z nimi swoimi planami i celami. Dzięki temu wszyscy są na tej samej stronie i rozumieją, co należy zrobić. To jak bycie kapitanem drużyny i upewnianie się, że wszyscy grają w tę samą grę.

3. Przeanalizuj prosty plan rozwiązania

Teraz, jeśli chodzi o planowanie faktycznej pracy, staraj się zachować prostotę. Podziel swoje duże cele na mniejsze zadania. Dzięki temu unikniesz przytłoczenia i skupisz się na tym, co naprawdę ważne. Pomyśl o tym jak o tworzeniu krok po kroku planu działania dla swojego projektu.

4. Odmów, jeśli nie pasuje to do rozwiązania

Czasami Twój zespół może wpaść na nowe pomysły lub chcieć dodać dodatkowe rzeczy. Chociaż te pomysły mogą być fajne, musisz być gotowy powiedzieć „nie”, chyba że będzie to niewielka poprawa. Powiedzenie „nie” może być trudne, ale pozwala uniknąć zboczenia z trasy i niedotrzymania terminów.

5. Miej zapis swoich postępów

Prowadź rejestr tego, co zrobiłeś. To jak zapisywanie wyniku w grze. Dzięki temu dowiesz się, jak daleko zaszedłeś i czy zmierzasz we właściwym kierunku. Narzędzia pomagające zarządzać tym procesem są dla programistów niczym tablice wyników, pomagające im podążać właściwą drogą i dostarczać klientom to, czego naprawdę potrzebują.

YAGNI a inne zasady

YAGNI (You Are’n’t Gonna Need It) to zasada tworzenia oprogramowania, która odradza dodawanie funkcjonalności, dopóki nie jest to konieczne. Kontrastuje z innymi zasadami na kilka sposobów:

  1. KISS (Keep It Simple, głupi) : KISS to zasada opowiadająca się za prostotą projektowania i unikaniem niepotrzebnej złożoności. YAGNI uzupełnia KISS odradzając dodawanie niepotrzebnej funkcjonalności, która może prowadzić do zwiększenia złożoności.
  2. SUCHY (nie powtarzaj się) : DRY to zasada zalecająca ponowne wykorzystanie kodu i unikanie powielania. Podczas gdy DRY skupia się na eliminacji zbędnego kodu, YAGNI koncentruje się na unikaniu niepotrzebnej funkcjonalności.
  3. SOLIDNY : SOLID to zbiór zasad projektowania obiektowego, które promują kod modułowy, łatwy w utrzymaniu i skalowalny. Podczas gdy zasady SOLID koncentrują się na projektowaniu i architekturze kodu, YAGNI koncentruje się na funkcjonalności kodu.
  4. TDD (rozwój oparty na testach) : TDD to proces programistyczny, który obejmuje pisanie testów przed napisaniem kodu. TDD koncentruje się na pisaniu testów w celu kierowania procesem rozwoju, podczas gdy YAGNI koncentruje się na unikaniu niepotrzebnej funkcjonalności.
  5. Zręczny : Agile to zbiór zasad i praktyk tworzenia oprogramowania, który kładzie nacisk na współpracę, elastyczność i opinie klientów. YAGNI można postrzegać jako zasadę Agile, ponieważ zachęca programistów do skupienia się na dostarczaniu najważniejszych funkcji w pierwszej kolejności i dostosowywaniu się do zmieniających się wymagań.

Oto porównanie YAGNI z innymi zasadami tworzenia oprogramowania w oparciu o aspekty YAGNI i sposób, w jaki inne zasady je rozwiązują:

Aspekt YAGNI Jak rozwiązują to inne zasady Jak YAGNI rozwiązuje ten problem
Prostota Inne zasady, takie jak KISS (Keep It Simple, Stupid), również opowiadają się za prostotą projektowania i unikaniem niepotrzebnej złożoności. YAGNI uzupełnia KISS odradzając dodawanie niepotrzebnej funkcjonalności, która może prowadzić do zwiększenia złożoności.
Efektywność Inne zasady, takie jak Agile i Lean Software Development, kładą nacisk na dostarczanie wartości klientowi i eliminację marnotrawstwa. YAGNI koncentruje się na dostarczaniu najprostszego rozwiązania spełniającego aktualne wymagania, co może prowadzić do szybszych cykli rozwoju i bardziej efektywnego wykorzystania zasobów.
Elastyczność Inne zasady, takie jak Agile i Scrum, kładą nacisk na współpracę, elastyczność i dostosowywanie się do zmieniających się wymagań. YAGNI zachęca programistów, aby w pierwszej kolejności skupili się na dostarczaniu najważniejszych funkcji i dostosowywali się do zmieniających się wymagań.
Redukcja ryzyka Inne zasady, takie jak Test-Driven Development (TDD) i Continuous Integration (CI), skupiają się na dostarczaniu wysokiej jakości kodu, który spełnia aktualne wymagania. YAGNI odradza dodawanie niepotrzebnej funkcjonalności, która może zmniejszyć ryzyko wprowadzenia błędów i innych problemów do bazy kodu.
Koncentracja na użytkowniku Inne zasady, takie jak Agile i Lean Software Development, skupiają się na dostarczaniu wartości klientowi. YAGNI pomaga skupić się na dostarczaniu najważniejszych funkcji, co może zapewnić, że oprogramowanie spełni potrzeby i oczekiwania użytkownika.
Oszczędności Inne zasady, takie jak Agile i Lean Software Development, skupiają się na eliminacji marnotrawstwa i dostarczaniu wartości klientowi. YAGNI może prowadzić do oszczędności kosztów, unikając niepotrzebnych funkcji i koncentrując się na dostarczaniu najważniejszych funkcji w pierwszej kolejności.
Łatwość konserwacji Inne zasady, takie jak SOLID (pojedyncza odpowiedzialność, otwarta/zamknięta, podstawienie Liskowa, segregacja interfejsu, inwersja zależności), skupiają się na projektowaniu i architekturze kodu. YAGNI pomaga zachować prostotę i skupienie bazy kodu, dzięki czemu jest łatwiejsza do zrozumienia i utrzymania.

Ogólnie rzecz biorąc, YAGNI uzupełnia inne zasady tworzenia oprogramowania, koncentrując się na dostarczaniu najprostszego rozwiązania spełniającego aktualne wymagania i unikając niepotrzebnej funkcjonalności.

Przykłady YAGNI

Oto kilka przykładów zastosowania YAGNI:

  1. Funkcja Unikanie pełzania : Zespół programistów pracuje nad aplikacją internetową. Początkowo planują włączyć funkcję umożliwiającą użytkownikom tworzenie i udostępnianie niestandardowych awatarów. Jednak po rozważeniu czasu i zasobów wymaganych do wdrożenia tej funkcji decydują się odłożyć ją do czasu otrzymania informacji zwrotnej od użytkowników wskazujących, że jest to konieczne.
  2. Redukcja złożoności : programista pracuje nad aplikacją mobilną, która umożliwia użytkownikom śledzenie ich rutynowych ćwiczeń. Początkowo planują włączyć funkcję, która automatycznie generuje spersonalizowane plany ćwiczeń na podstawie celów fitness użytkownika. Jednak po rozważeniu złożoności wdrożenia tej funkcji i potencjalnego wpływu na wydajność aplikacji, zdecydowali się pozostać przy prostszym podejściu, które umożliwia użytkownikom ręczne tworzenie własnych planów treningowych.
  3. Alokacja zasobów : Zespół programistów pracuje nad platformą e-commerce. Początkowo planują włączyć funkcję, która pozwoli użytkownikom tworzyć listy życzeń i udostępniać je znajomym. Jednak po rozważeniu ograniczonego czasu i zasobów dostępnych na projekt decydują się skupić na innych funkcjach, które są bardziej krytyczne dla powodzenia platformy.
  4. Zarządzanie zakresem : Zespół programistów pracuje nad projektem oprogramowania dla klienta. Klient początkowo żąda kilku dodatkowych funkcji, które jego zdaniem będą niezbędne do powodzenia projektu. Jednak po rozważeniu budżetu i harmonogramu projektu zespół programistów decyduje się ograniczyć zakres projektu do uwzględnienia tylko najbardziej krytycznych funkcji.
  5. Rozwój oparty na informacjach zwrotnych : Zespół programistów pracuje nad nowym oprogramowaniem. Początkowo planują włączyć funkcję umożliwiającą użytkownikom przesyłanie opinii na temat działania produktu. Jednak po rozważeniu potencjalnego wpływu na użyteczność produktu i czasu potrzebnego na wdrożenie tej funkcji, decydują się na odłożenie jej do czasu otrzymania informacji zwrotnej od użytkowników wskazującej, że jest to konieczne.

Korzyści z YAGNI

Korzyści YAGNI (You Are’t Gonna Need It) w tworzeniu oprogramowania są liczne i mogą mieć znaczący wpływ na proces rozwoju, jakość produktu końcowego i ogólny sukces projektu. Oto niektóre z kluczowych korzyści:

  • Szybszy rozwój : Koncentrując się tylko na tym, co jest w danej chwili potrzebne, programiści mogą uniknąć spędzania czasu na funkcjach, które mogą nigdy nie zostać wykorzystane. Może to prowadzić do szybszych cykli rozwoju i bardziej efektywnego wykorzystania zasobów.
  • Prostota : Niepotrzebne funkcje mogą zwiększyć złożoność bazy kodu, utrudniając jej utrzymanie i zrozumienie. YAGNI pomaga zachować prostotę i skupienie bazy kodu, ułatwiając programistom pracę z nią.
  • Elastyczność : Unikając niepotrzebnych funkcji, programiści mogą zachować elastyczność bazy kodu i możliwość dostosowywania się do zmian. Może to być szczególnie ważne w środowiskach o szybkim tempie, w których wymagania mogą często się zmieniać.
  • Zmniejszone ryzyko : Niepotrzebne funkcje mogą wprowadzać błędy i inne problemy do bazy kodu. Unikając tych funkcji, programiści mogą zmniejszyć ryzyko wprowadzenia błędów i innych problemów do bazy kodu.
  • Koncentracja na użytkowniku : YAGNI pomaga skupić się na dostarczaniu wartości użytkownikowi końcowemu. Implementując tylko te funkcje, które są niezbędne użytkownikowi, programiści mogą zapewnić, że oprogramowanie spełni jego potrzeby i oczekiwania.
  • Oszczędności : Unikając niepotrzebnych funkcji, programiści mogą zaoszczędzić czas i zasoby, które w przeciwnym razie zostałyby wydane na wdrażanie i utrzymywanie tych funkcji. Może to prowadzić do oszczędności kosztów dla organizacji.
  • Ulepszona łatwość konserwacji : Prostszy kod jest łatwiejszy do zrozumienia i utrzymania, co ułatwia programistom wprowadzanie zmian i naprawianie błędów.
  • Lepsze doświadczenie użytkownika : Koncentrując się na dostarczaniu w pierwszej kolejności najważniejszych funkcji, programiści mogą zapewnić użytkownikom szybsze otrzymanie potrzebnych funkcji, co przełoży się na lepsze ogólne wrażenia użytkownika.

Wniosek

Zasada YAGNI może być cenna w różnych aspektach tworzenia oprogramowania. Promuje prostotę, zmniejsza niepotrzebną złożoność i pomaga zespołom skupić się na dostarczaniu niezbędnej funkcjonalności. Biorąc pod uwagę YAGNI, programiści mogą zwiększyć produktywność, łatwość konserwacji i ogólny sukces projektu. Jednak ważne jest, aby zachować równowagę i nie błędnie interpretować YAGNI jako wymówki do zaniedbania przewidywania lub rozważań architektonicznych.

Często zadawane pytania dotyczące YAGNI

Pytanie 1. Jaka jest krytyka YAGNI?

Niektórzy twierdzą, że YAGNI ma wadę. Twierdzą, że jeśli pomyślisz tylko o tym, czego potrzebujesz teraz i zignorujesz potencjalne przyszłe potrzeby, może się okazać, że będziesz musiał powtórzyć wiele prac później, gdy pojawią się nowe wymagania.

Pytanie 2. Jakie są zasady YAGNI?

Nie będziesz tego potrzebować. YAGNI to zasada tworzenia oprogramowania wywodząca się z programowania ekstremalnego (XP), która stanowi, że programista nie powinien dodawać dodatkowych funkcji, jeśli nie jest to konieczne.

pogrubienie tekstu w CSS

Pytanie 3. Jakie są argumenty przemawiające za zasadą YAGNI?

Unika się pełzania funkcji, co oznacza, że ​​programista nie będzie korzystał z funkcjonalności, które w przyszłości będą rzadko używane.

Pytanie 4. Jaka jest różnica między SOLID i YAGNI?

SOLID oczekuje, że będziesz mieć pojęcie, nawet jeśli będzie to tylko trochę, na temat tego, jak kod może zmienić się w przyszłości, szczególnie w przypadku zasady pojedynczej odpowiedzialności (SRP). To jak mieć nadzieję, że można przewidzieć pewne rzeczy. Z drugiej strony YAGNI zakłada, że ​​przez większość czasu nie wiesz, dokąd kod zmierza w przyszłości. To tak, jakby mieć wątpliwości co do naszej zdolności przewidywania.