logo

Kas ir YAGNI princips (jums tas nav vajadzīgs)?

YAGNI apzīmē Jums tas nebūs vajadzīgs. Tas ir programmatūras izstrādes princips, kas liek domāt, ka izstrādātājiem ir jāievieš tikai līdzekļi, kas ir nepieciešami pašreizējām prasībām, nevis jāpievieno papildu funkcionalitāte, kas varētu būt nepieciešama nākotnē. Šis princips ir balstīts uz domu, ka nevajadzīgu funkciju pievienošana var palielināt sarežģītību, ilgāku izstrādes laiku un, iespējams, vairāk kļūdu.

YAGNI princips ir cieši saistīts ar SKŪPSTS princips (Keep It Simple, Stupid), kas iestājas par dizaina vienkāršību un izvairīšanos no nevajadzīgas sarežģītības. Abi principi mudina izstrādātājus koncentrēties uz visvienkāršākā risinājuma piegādi, kas atbilst pašreizējām prasībām, nevis mēģināt paredzēt un pielāgot iespējamās nākotnes vajadzības.



Kas ir YAGNI Principal

Satura rādītājs

Kas ir YAGNI?

YAGNI ir princips, kas mudina izstrādātājus izvairīties no funkciju vai funkcionalitātes pievienošanas sistēmai, kamēr tās nav skaidri pieprasītas. Tas ir balstīts uz pieņēmumu, ka nevajadzīgu funkciju pievienošana var palielināt sarežģītību, ilgāku izstrādes laiku un, iespējams, vairāk kļūdu. Tā vietā izstrādātājiem jākoncentrējas uz vienkāršākā risinājuma piegādi, kas atbilst pašreizējām prasībām.



YAGNI ir iegūts no ekstrēmas programmēšanas .

Kāpēc izstrādātājam būtu jāievēro YAGNI princips?

Izstrādātājam ir jāievēro YAGNI principi šādu iemeslu dēļ:

  • Ēkas izmaksas: Būvēšanas izmaksas ir laika, pūļu un resursu daudzums, kas iztērēts līdzekļa vai risinājuma izveidei. Tas ietver visu, sākot no plānošanas un kodēšanas līdz testēšanai. Ja uzbūvējat kaut ko tādu, kas izrādās nav vajadzīgs, būvniecības izmaksas atspoguļo ieguldījumu, ko esat veicis tā izveidē.
  • Kavēšanās izmaksas: Kavēšanās izmaksas ir neizmantota iespēja vai ekonomiskā ietekme, ja līdzeklis vai risinājums netiek piegādāts nekavējoties. Ja veltīsit laiku mazāk kritiskām funkcijām, jūs varat aizkavēt svarīgāko funkciju ieviešanu. Šīs kavēšanās rezultātā var tikt zaudētas iespējas gūt ieņēmumus vai citas priekšrocības.
  • Pārvadāšanas izmaksas: Pārnēsāšanas izmaksas ir pastāvīgas grūtības un papildu darbs, ko izraisa konkrēta programmatūras funkcija. Ja līdzeklis padara sarežģītāku, tas var apgrūtināt darbu ar citām programmatūras daļām, radot papildu laiku un pūles. Tas ir kā nest papildu svaru, mēģinot virzīties uz priekšu.
  • Remonta izmaksas: Remonta izmaksas, kas pazīstamas arī kā tehniskais parāds, ir pastāvīgas izmaksas, kas saistītas ar kļūdu, kļūdu vai nepareizas izvēles labošanu funkcijas izstrādes laikā. Ja veidojat kaut ko, kas vēlāk ir jāpielāgo, šo problēmu risināšana prasa papildu laiku un resursus, līdzīgi kā parāda dzēšana.

Kāpēc izstrādātājam būtu jāievēro YAGNI Principal



virknes java masīvs

Kāpēc YAGNI ir svarīga?

YAGNI ir svarīgs, jo tas palīdz saglabāt programmatūras izstrādi mērķtiecīgu un efektīvu. Ieviešot tikai nepieciešamās funkcijas, izstrādātāji var izvairīties no laika un resursu tērēšanas nevajadzīgai funkcionalitātei. Tas var izraisīt ātrāku izstrādes laiku, samazinātu sarežģītību un labāk uzturējamu kodu bāzi.

Ideja aiz YAGNI

cast virkni uz int

Lai izmantotu YAGNI kā izstrādātāju, tas ir kā ar praktisku ceļvedi, lai jūsu darbs būtu mērķtiecīgs un efektīvs.

YAGNI galvenais izstrādātājiem

1. Iegūstiet nepieciešamās prasības

Visas lietas, kas nepieciešamas jūsu projektam, un sakārtojiet tās obligātajās un var pagaidīt. Tas palīdz jums precīzi zināt, pie kā strādāt. Neatkarīgi no tā, vai to pierakstāt uz papīra vai rakstāt uz ekrāna, saraksts palīdz jums sakārtoties.

2. Apspriediet ar savu komandu

Pēc tam ir pienācis laiks runāt ar savu komandu. Dalieties savos plānos un mērķos ar viņiem. Tas nodrošina, ka visi atrodas vienā lapā un saprot, kas jādara. Tas ir tāpat kā būt komandas kapteinim un pārliecināties, ka visi spēlē vienu un to pašu spēli.

3. Analizējiet vienkāršu risinājuma plānu

Tagad, kad runa ir par faktiskā darba plānošanu, rīkojieties vienkārši. Sadaliet savus lielos mērķus mazākos uzdevumos. Tas palīdz izvairīties no satriekšanas un nodrošina, ka koncentrējaties uz to, kas patiešām ir svarīgs. Padomājiet par to kā sava projekta soli pa solim ceļveža izveidi.

4. Atteikties, ja tas neatbilst risinājumam

Dažreiz jūsu komanda var nākt klajā ar jaunām idejām vai vēlēties pievienot papildu lietas. Lai gan šīs idejas varētu būt foršas, jums ir jābūt gatavam pateikt nē, ja vien tas nav niecīgs uzlabojums. Teikt nē var būt grūti, taču tas neļauj jums novirzīties no ceļa un neievērot termiņus.

5. Pierakstiet savu progresu

Pierakstiet paveikto. Tas ir kā rezultāta saglabāšana spēlē. Tas palīdz jums redzēt, cik tālu esat nonācis un vai virzāties pareizajā virzienā. Rīki, kas palīdz pārvaldīt šo procesu, ir kā rezultātu tablo izstrādātājiem, kas palīdz viņiem sekot līdzi un nodrošināt klientiem patiešām nepieciešamo.

YAGNI vs citi principi

YAGNI (You Are't Gonna Need It) ir programmatūras izstrādes princips, kas neiesaka pievienot funkcionalitāti, kamēr tas nav nepieciešams. Tas vairākos veidos kontrastē ar citiem principiem:

  1. SKŪPSTS (Turiet to vienkārši, stulbi) : KISS ir princips, kas iestājas par dizaina vienkāršību un izvairīšanos no nevajadzīgas sarežģītības. YAGNI papildina KISS, iesakot nepievienot nevajadzīgu funkcionalitāti, kas var palielināt sarežģītību.
  2. DRY (neatkārtojiet sevi) : DRY ir princips, kas atbalsta koda atkārtotu izmantošanu un izvairīšanos no dublēšanās. Kamēr DRY koncentrējas uz liekā koda novēršanu, YAGNI koncentrējas uz to, lai izvairītos no nevajadzīgas funkcionalitātes.
  3. CIETS : SOLID ir uz objektu orientēta dizaina principu kopums, kas veicina modulāru, uzturējamu un mērogojamu kodu. Kamēr SOLID principi koncentrējas uz koda dizainu un arhitektūru, YAGNI koncentrējas uz koda funkcionalitāti.
  4. TDD (testu vadīta izstrāde) : TDD ir izstrādes process, kas ietver testu rakstīšanu pirms koda rakstīšanas. TDD koncentrējas uz testu rakstīšanu, lai virzītu izstrādes procesu, savukārt YAGNI koncentrējas uz to, lai izvairītos no nevajadzīgas funkcionalitātes.
  5. Veikls : Agile ir programmatūras izstrādes principu un prakses kopums, kurā uzsvērta sadarbība, elastība un klientu atsauksmes. YAGNI var uzskatīt par Agile principu, jo tas mudina izstrādātājus vispirms koncentrēties uz vissvarīgāko funkciju nodrošināšanu un pielāgoties mainīgajām prasībām.

Šeit ir YAGNI salīdzinājums ar citiem programmatūras izstrādes principiem, kuru pamatā ir YAGNI aspekti, un tas, kā citi principi tos atrisina:

YAGNI aspekts Kā to atrisina citi principi Kā YAGNI to atrisina
Vienkāršība Citi principi, piemēram, KISS (Keep It Simple, Stupid), arī iestājas par dizaina vienkāršību un izvairīšanos no nevajadzīgas sarežģītības. YAGNI papildina KISS, iesakot nepievienot nevajadzīgu funkcionalitāti, kas var palielināt sarežģītību.
Efektivitāte Citi principi, piemēram, Agile un Lean Software Development, uzsver vērtības nodrošināšanu klientam un atkritumu novēršanu. YAGNI koncentrējas uz visvienkāršākā risinājuma piegādi, kas atbilst pašreizējām prasībām, kas var nodrošināt ātrākus izstrādes ciklus un efektīvāku resursu izmantošanu.
Elastīgums Citi principi, piemēram, Agile un Scrum, uzsver sadarbību, elastību un pielāgošanos mainīgajām prasībām. YAGNI mudina izstrādātājus vispirms koncentrēties uz vissvarīgāko funkciju nodrošināšanu un pielāgoties mainīgajām prasībām.
Riska samazināšana Citi principi, piemēram, Test-Driven Development (TDD) un Continuous Integration (CI), ir vērsti uz augstas kvalitātes koda piegādi, kas atbilst pašreizējām prasībām. YAGNI neiesaka pievienot nevajadzīgu funkcionalitāti, kas var samazināt kļūdu un citu problēmu iekļūšanas risku kodu bāzē.
Lietotāja fokuss Citi principi, piemēram, Agile un Lean Software Development, ir vērsti uz vērtības nodrošināšanu klientam. YAGNI palīdz koncentrēties uz svarīgāko funkciju nodrošināšanu vispirms, kas var nodrošināt, ka programmatūra atbilst lietotāja vajadzībām un vēlmēm.
Izmaksu ietaupījumi Citi principi, piemēram, Agile un Lean Software Development, ir vērsti uz atkritumu novēršanu un vērtības nodrošināšanu klientam. YAGNI var nodrošināt izmaksu ietaupījumu, izvairoties no nevajadzīgām funkcijām un vispirms koncentrējoties uz svarīgāko funkciju piegādi.
Uzturamība Citi principi, piemēram, SOLID (Single Responsibility, Open/Closed, Liskov Substitition, Interface Segregation, Dependency Inversion), koncentrējas uz koda dizainu un arhitektūru. YAGNI palīdz uzturēt kodu bāzi vienkāršu un koncentrētu, padarot to vieglāk saprotamu un uzturējamu.

Kopumā YAGNI papildina citus programmatūras izstrādes principus, koncentrējoties uz vienkāršākā risinājuma piegādi, kas atbilst pašreizējām prasībām un izvairoties no nevajadzīgas funkcionalitātes.

YAGNI piemēri

Šeit ir daži piemēri, kā YAGNI var lietot:

  1. No funkcijas Creep izvairīties : izstrādes komanda strādā pie tīmekļa lietojumprogrammas. Sākotnēji viņi plāno iekļaut funkciju, kas lietotājiem ļauj izveidot un koplietot pielāgotus iemiesojumus. Tomēr, apsverot laiku un resursus, kas nepieciešami šīs funkcijas ieviešanai, viņi nolemj to atlikt, līdz saņems atsauksmes no lietotājiem, norādot, ka tas ir nepieciešams.
  2. Sarežģītības samazināšana : izstrādātājs strādā pie mobilās lietotnes, kas lietotājiem ļauj izsekot viņu treniņu rutīnas. Sākotnēji viņi plāno iekļaut funkciju, kas automātiski ģenerē personalizētus treniņu plānus, pamatojoties uz lietotāja fitnesa mērķiem. Tomēr, ņemot vērā šīs funkcijas ieviešanas sarežģītību un iespējamo ietekmi uz lietotnes veiktspēju, viņi nolemj izvēlēties vienkāršāku pieeju, kas lietotājiem ļauj manuāli izveidot savus treniņu plānus.
  3. Resursu piešķiršana : izstrādes komanda strādā pie e-komercijas platformas. Sākotnēji viņi plāno iekļaut funkciju, kas lietotājiem ļauj izveidot vēlmju sarakstu un kopīgot tos ar draugiem. Tomēr, ņemot vērā projektam pieejamo ierobežoto laiku un resursus, viņi nolemj koncentrēties uz citām funkcijām, kas ir svarīgākas platformas panākumiem.
  4. Darbības jomas pārvaldība : izstrādes komanda strādā pie programmatūras projekta klientam. Klients sākotnēji pieprasa vairākas papildu funkcijas, kas, viņuprāt, būs nepieciešamas projekta panākumiem. Tomēr, ņemot vērā projekta budžetu un laika grafiku, izstrādes komanda nolemj ierobežot projekta darbības jomu, iekļaujot tikai vissvarīgākās funkcijas.
  5. Uz atsauksmēm balstīta attīstība : izstrādes komanda strādā pie jauna programmatūras produkta. Sākotnēji viņi plāno iekļaut funkciju, kas lietotājiem ļauj sniegt atsauksmes par produkta veiktspēju. Tomēr, apsverot iespējamo ietekmi uz produkta lietojamību un šīs funkcijas ieviešanai nepieciešamo laiku, viņi nolemj atlikt to līdz brīdim, kad saņems atsauksmes no lietotājiem, norādot, ka tā ir nepieciešama.

YAGNI priekšrocības

YAGNI (You Are’t Gonna Need It) priekšrocības programmatūras izstrādē ir daudzas, un tās var būtiski ietekmēt izstrādes procesu, galaprodukta kvalitāti un kopējos projekta panākumus. Šeit ir dažas no galvenajām priekšrocībām:

vēsture java
  • Ātrāka attīstība : koncentrējoties tikai uz to, kas šobrīd ir nepieciešams, izstrādātāji var izvairīties no laika tērēšanas funkcijām, kuras, iespējams, nekad netiks izmantotas. Tas var izraisīt ātrākus attīstības ciklus un efektīvāku resursu izmantošanu.
  • Vienkāršība : nevajadzīgas funkcijas var sarežģīt kodu bāzi, apgrūtinot tās uzturēšanu un izpratni. YAGNI palīdz uzturēt kodu bāzi vienkāršu un koncentrētu, padarot izstrādātājiem vieglāku darbu.
  • Elastīgums : Izvairoties no nevajadzīgām funkcijām, izstrādātāji var saglabāt kodu bāzi elastīgu un pielāgojamu izmaiņām. Tas var būt īpaši svarīgi straujā vidē, kur prasības var bieži mainīties.
  • Samazināts risks : nevajadzīgas funkcijas kodu bāzē var izraisīt kļūdas un citas problēmas. Izvairoties no šīm funkcijām, izstrādātāji var samazināt kļūdu un citu problēmu ieviešanas risku kodu bāzē.
  • Lietotāja fokuss : YAGNI palīdz koncentrēties uz vērtības nodrošināšanu galalietotājam. Ieviešot tikai lietotājam nepieciešamās funkcijas, izstrādātāji var nodrošināt, ka programmatūra atbilst lietotāja vajadzībām un vēlmēm.
  • Izmaksu ietaupījumi : Izvairoties no nevajadzīgām funkcijām, izstrādātāji var ietaupīt laiku un resursus, kas citādi tiktu tērēti šo funkciju ieviešanai un uzturēšanai. Tas var nodrošināt organizācijas izmaksu ietaupījumu.
  • Uzlabota apkope : vienkāršāku kodu bāzi ir vieglāk saprast un uzturēt, tādējādi izstrādātājiem ir vieglāk veikt izmaiņas un labot kļūdas.
  • Labāka lietotāja pieredze : vispirms koncentrējoties uz svarīgāko funkciju nodrošināšanu, izstrādātāji var nodrošināt, ka lietotāji ātrāk saņem vajadzīgo funkcionalitāti, tādējādi nodrošinot labāku vispārējo lietotāja pieredzi.

Secinājums

YAGNI princips var būt vērtīgs dažādos programmatūras izstrādes aspektos. Tas veicina vienkāršību, samazina nevajadzīgu sarežģītību un palīdz komandām koncentrēties uz būtisku funkcionalitāti. Izmantojot YAGNI, izstrādātāji var uzlabot produktivitāti, apkopi un kopējos projekta panākumus. Tomēr ir svarīgi panākt līdzsvaru un nekļūdīgi interpretēt YAGNI kā attaisnojumu tālredzības vai arhitektūras apsvērumu neievērošanai.

FAQ par YAGNI

Q1. Kāda ir YAGNI kritika?

Daži cilvēki saka, ka YAGNI ir mīnuss. Viņi apgalvo, ka, ja jūs domājat tikai par to, kas jums šobrīd nepieciešams, un ignorējat iespējamās nākotnes vajadzības, vēlāk, kad parādīsies jaunas prasības, jums var nākties pārtaisīt lielu daļu sava darba.

Q2. Kādi ir YAGNI noteikumi?

Jums tas nebūs vajadzīgs. YAGNI ir programmatūras izstrādes princips, kas iegūts no ekstremālās programmēšanas (XP), kas nosaka, ka programmētājs nedrīkst pievienot papildu funkcionalitāti, kamēr tas nav nepieciešams.

Q3. Kādi ir argumenti par labu YAGNI principam?

Tiek novērsta funkciju slīdēšana, kas nozīmē, ka izstrādātājs neizmantos funkcionalitāti, kas diez vai tiks izmantota nākotnē.

Q4. Kāda ir atšķirība starp SOLID un YAGNI?

SOLID sagaida, ka jums būs priekšstats, pat ja tas ir tikai nedaudz, par to, kā kods varētu mainīties nākotnē, jo īpaši saistībā ar vienotas atbildības principu (Single Responsibility Principle — SRP). Tas ir kā cerība, ka varat paredzēt dažas lietas. No otras puses, YAGNI pieņem, ka lielāko daļu laika jūs nezināt, kur kods tiks virzīts nākotnē. Tas ir kā šaubīties par mūsu spēju prognozēt.