YAGNI significa No ho necessitareu. És un principi en el desenvolupament de programari que suggereix que els desenvolupadors només haurien d'implementar les funcions necessàries per als requisits actuals i no afegir cap funcionalitat addicional que es pugui necessitar en el futur. Aquest principi es basa en la idea que afegir funcions innecessàries pot comportar una major complexitat, temps de desenvolupament més llargs i, potencialment, més errors.
El principi YAGNI està estretament relacionat amb el PETON principi (Keep It Simple, Stupid), que defensa la simplicitat en el disseny i evitar una complexitat innecessària. Ambdós principis animen els desenvolupadors a centrar-se a oferir la solució més senzilla que compleixi els requisits actuals, en lloc d'intentar anticipar-se i adaptar-se a les possibles necessitats futures.
What is YAGNI Principal
Taula de contingut
- Què és YAGNI?
- Com s'implementa YAGNI?
- YAGNI vs altres principis
- Exemples de YAGNI
- Beneficis de YAGNI
- Preguntes freqüents de YAGNI
Què és YAGNI?
YAGNI és un principi que anima els desenvolupadors a evitar afegir característiques o funcionalitats a un sistema fins que no es requereixin explícitament. Es basa en la premissa que afegir funcions innecessàries pot comportar una major complexitat, temps de desenvolupament més llargs i, potencialment, més errors. En canvi, els desenvolupadors haurien de centrar-se a oferir la solució més senzilla que compleixi els requisits actuals.
YAGNI es deriva de la programació extrema .
Per què un desenvolupador hauria de seguir el principi YAGNI?
El desenvolupador ha de seguir els principis de YAGNI pels motius següents:
- Cost de la construcció: El cost de la creació és la quantitat de temps, esforç i recursos que es dediquen a crear una funció o solució. Inclou tot, des de la planificació i la codificació fins a les proves. Si construïu alguna cosa que resulta que no és necessària, el cost de construcció representa la inversió que heu fet per crear-la.
- Cost del retard: El cost del retard és l'oportunitat perduda o l'impacte econòmic de no oferir una funció o solució ràpidament. Si dediqueu temps a funcions menys crítiques, podeu retardar la implementació d'altres més importants. Aquest retard pot provocar oportunitats perdudes d'ingressos o altres beneficis.
- Cost de transport: El cost de transport és la dificultat constant i el treball addicional causat per tenir una característica particular al vostre programari. Quan una funció afegeix complexitat, pot dificultar el treball en altres parts del programari, la qual cosa comporta temps i esforç addicionals. És com portar un pes addicional mentre intentes avançar.
- Cost de la reparació: El cost de reparació, també conegut com a deute tècnic, és el cost en curs associat a la correcció d'errors, errors o eleccions deficients durant el desenvolupament d'una funció. Si construïu alguna cosa que necessita ajustaments més tard, abordar aquests problemes comporta temps i recursos addicionals, de manera similar a pagar un deute.
Per què el desenvolupador hauria de seguir YAGNI Principal
rebaixa amb imatges
Per què és important YAGNI?
YAGNI és important perquè ajuda a mantenir el desenvolupament de programari enfocat i eficient. En implementar només les funcions necessàries, els desenvolupadors poden evitar perdre temps i recursos en funcionalitats innecessàries. Això pot comportar temps de desenvolupament més ràpids, una complexitat reduïda i una base de codi més fàcil de mantenir.
La idea darrere de YAGNI
Utilitzar YAGNI com a desenvolupador, és com tenir una guia pràctica per mantenir el teu treball concentrat i eficient.
YAGNI Principal per a Desenvolupadors
1. Obteniu els requisits necessaris
Totes les coses que el vostre projecte necessita i ordenar-les en imprescindibles i poden esperar. Això us ajuda a saber exactament en què heu de treballar. Tant si l'escriu en paper com si l'escriu en una pantalla, tenir una llista us manté organitzat.
2. Parleu amb el vostre equip
Després d'això, és hora de parlar amb el vostre equip. Comparteix amb ells els teus plans i objectius. Això garanteix que tothom estigui a la mateixa pàgina i entengui què cal fer. És com ser un capità d'equip i assegurar-se que tothom està jugant al mateix joc.
3. Analitzar un pla simple per a la solució
Ara, quan es tracta de planificar el treball real, manteniu-ho senzill. Desglosseu els vostres grans objectius en tasques més petites. Això us ajuda a evitar que us desbordeu i us garanteix que us centreu en allò que realment importa. Penseu en això com si construïu un full de ruta pas a pas per al vostre projecte.
4. Negar-se si no s'adapta a la solució
De vegades, el vostre equip pot plantejar noves idees o voler afegir coses addicionals. Tot i que aquestes idees poden ser genials, heu d'estar preparats per dir que no tret que sigui una petita millora. Dir que no pot ser difícil, però t'impedeix sortir de la pista i perdre els terminis.
string substitueix tot java
5. Teniu un registre del vostre progrés
Manteniu un registre del que heu fet. És com mantenir la puntuació en un partit. Això us ajuda a veure fins a quin punt heu arribat i si aneu en la direcció correcta. Les eines que us ajuden a gestionar aquest procés són com els marcadors per als desenvolupadors, que els ajuden a mantenir-se al dia i oferir el que realment necessiten els clients.
YAGNI vs altres principis
YAGNI (You Aren't Gonna Need It) és un principi de desenvolupament de programari que aconsella no afegir funcionalitats fins que sigui necessari. Contrasta amb altres principis de diverses maneres:
- KISS (Manteniu-ho senzill, estúpid) : KISS és un principi que aposta per la simplicitat en el disseny i evitar una complexitat innecessària. YAGNI complementa KISS desaconsellant afegir funcionalitats innecessàries, que poden augmentar la complexitat.
- SEC (No et repeteixis) : DRY és un principi que defensa la reutilització del codi i evitar la duplicació. Mentre que DRY se centra a eliminar el codi redundant, YAGNI se centra a evitar funcionalitats innecessàries.
- SÒLID : SOLID és un conjunt de principis per al disseny orientat a objectes que promouen codi modular, mantenible i escalable. Mentre que els principis SOLID se centren en el disseny i l'arquitectura del codi, YAGNI se centra en la funcionalitat del codi.
- TDD (Desenvolupament impulsat per proves) : TDD és un procés de desenvolupament que implica escriure proves abans d'escriure el codi. TDD se centra a escriure proves per impulsar el procés de desenvolupament, mentre que YAGNI se centra a evitar funcionalitats innecessàries.
- Àgil : Àgil és un conjunt de principis i pràctiques per al desenvolupament de programari que posa l'accent en la col·laboració, la flexibilitat i els comentaris dels clients. YAGNI es pot veure com un principi àgil, ja que anima els desenvolupadors a centrar-se en oferir primer les funcions més importants i adaptar-se als requisits canviants.
Aquí teniu una comparació de YAGNI amb altres principis de desenvolupament de programari basats en els aspectes de YAGNI i com els solucionen altres principis:
| Aspecte de YAGNI | Com ho resolen altres principis | Com ho resol YAGNI |
|---|---|---|
| Senzillesa | Altres principis, com KISS (Keep It Simple, Stupid), també advoquen per la simplicitat en el disseny i evitar una complexitat innecessària. | YAGNI complementa KISS desaconsellant afegir funcionalitats innecessàries, que poden augmentar la complexitat. |
| Eficiència | Altres principis, com el desenvolupament de programari Agile i Lean, posen l'accent en oferir valor al client i eliminar els residus. | YAGNI se centra a oferir la solució més senzilla que compleixi els requisits actuals, la qual cosa pot conduir a cicles de desenvolupament més ràpids i a un ús més eficient dels recursos. |
| Flexibilitat | Altres principis, com Agile i Scrum, posen l'accent en la col·laboració, la flexibilitat i l'adaptació als requisits canviants. | YAGNI anima els desenvolupadors a centrar-se en oferir primer les funcions més importants i adaptar-se als requisits canviants. |
| Reducció de riscos | Altres principis, com ara el desenvolupament impulsat per proves (TDD) i la integració contínua (CI), se centren en oferir codi d'alta qualitat que compleixi els requisits actuals. | YAGNI aconsella no afegir funcionalitats innecessàries, que poden reduir el risc d'introduir errors i altres problemes a la base de codi. |
| Enfocament de l'usuari | Altres principis, com ara el desenvolupament de programari Agile i Lean, se centren en oferir valor al client. | YAGNI ajuda a mantenir l'atenció a oferir primer les funcions més importants, que poden garantir que el programari compleixi les necessitats i expectatives de l'usuari. |
| Estalvi de costos | Altres principis, com ara el desenvolupament de programari Agile i Lean, se centren a eliminar els residus i oferir valor al client. | YAGNI pot suposar un estalvi de costos evitant funcions innecessàries i centrant-se a oferir primer les funcions més importants. |
| Mantenibilitat | Altres principis, com SOLID (Responsabilitat única, Obert/Tancat, Substitució de Liskov, Segregació d'interfícies, Inversió de dependències), se centren en el disseny i l'arquitectura del codi. | YAGNI ajuda a mantenir la base de codi senzilla i enfocada, facilitant la comprensió i el manteniment. |
En general, YAGNI complementa altres principis de desenvolupament de programari centrant-se a oferir la solució més senzilla que compleixi els requisits actuals i evitant funcionalitats innecessàries.
Exemples de YAGNI
Aquests són alguns exemples de com es pot aplicar YAGNI:
- S'ha evitat la funció Creep : Un equip de desenvolupament està treballant en una aplicació web. Inicialment tenen previst incloure una funció que permeti als usuaris crear i compartir avatars personalitzats. Tanmateix, després de considerar el temps i els recursos necessaris per implementar aquesta funció, decideixen ajornar-la fins que rebin comentaris dels usuaris que indiquin que és necessari.
- Reducció de la complexitat : Un desenvolupador està treballant en una aplicació mòbil que permet als usuaris fer un seguiment de les seves rutines d'exercici. Inicialment, tenen previst incloure una funció que generi automàticament plans d'entrenament personalitzats en funció dels objectius de fitness de l'usuari. Tanmateix, després de considerar la complexitat d'implementar aquesta funció i l'impacte potencial en el rendiment de l'aplicació, decideixen seguir amb un enfocament més senzill que permet als usuaris crear els seus propis plans d'entrenament manualment.
- Assignació de recursos : Un equip de desenvolupament està treballant en una plataforma de comerç electrònic. Inicialment tenen previst incloure una funció que permeti als usuaris crear una llista de desitjos i compartir-les amb els amics. Tanmateix, després de considerar el temps i els recursos limitats disponibles per al projecte, decideixen centrar-se en altres funcions que són més crítiques per a l'èxit de la plataforma.
- Gestió d'abast : Un equip de desenvolupament està treballant en un projecte de programari per a un client. El client sol·licita inicialment diverses funcions addicionals que creu que seran necessàries per a l'èxit del projecte. Tanmateix, després de considerar el pressupost i el calendari del projecte, l'equip de desenvolupament decideix limitar l'abast del projecte per incloure només les característiques més crítiques.
- Desenvolupament impulsat per retroalimentació : Un equip de desenvolupament està treballant en un nou producte de programari. Inicialment planegen incloure una funció que permeti als usuaris proporcionar comentaris sobre el rendiment del producte. Tanmateix, després de considerar l'impacte potencial en la usabilitat del producte i el temps necessari per implementar aquesta funció, decideixen ajornar-la fins que rebin comentaris dels usuaris que indiquin que és necessari.
Beneficis de YAGNI
Els beneficis de YAGNI (You Aren't Gonna Need It) en el desenvolupament de programari són nombrosos i poden tenir un impacte significatiu en el procés de desenvolupament, la qualitat del producte final i l'èxit global del projecte. Aquests són alguns dels avantatges clau:
- Desenvolupament més ràpid : En centrar-se només en el que es necessita en aquest moment, els desenvolupadors poden evitar dedicar temps a funcions que potser mai s'utilitzaran. Això pot conduir a cicles de desenvolupament més ràpids i a un ús més eficient dels recursos.
- Senzillesa : Les funcions innecessàries poden afegir complexitat a la base de codi, cosa que fa que sigui més difícil de mantenir i comprendre. YAGNI ajuda a mantenir la base de codi senzilla i enfocada, facilitant la feina dels desenvolupadors.
- Flexibilitat : Evitant funcions innecessàries, els desenvolupadors poden mantenir la base de codi flexible i adaptable als canvis. Això pot ser especialment important en entorns de ritme ràpid on els requisits poden canviar amb freqüència.
- Risc reduït : Les funcions innecessàries poden introduir errors i altres problemes a la base de codi. En evitar aquestes funcions, els desenvolupadors poden reduir el risc d'introduir errors i altres problemes a la base de codi.
- Enfocament de l'usuari : YAGNI ajuda a mantenir el focus en oferir valor a l'usuari final. En implementar només les funcions necessàries per a l'usuari, els desenvolupadors poden assegurar-se que el programari compleix les necessitats i expectatives de l'usuari.
- Estalvi de costos : En evitar funcions innecessàries, els desenvolupadors poden estalviar temps i recursos que d'altra manera es gastarien en implementar i mantenir aquestes funcions. Això pot comportar un estalvi de costos per a l'organització.
- Mantenibilitat millorada : una base de codi més senzilla és més fàcil d'entendre i mantenir, cosa que facilita als desenvolupadors fer canvis i corregir errors.
- Millor experiència d'usuari : En centrar-se en oferir primer les funcions més importants, els desenvolupadors poden assegurar-se que els usuaris obtinguin la funcionalitat que necessiten més aviat, la qual cosa permetrà una millor experiència d'usuari global.
Conclusió
El principi YAGNI pot ser valuós en diversos aspectes del desenvolupament de programari. Afavoreix la simplicitat, redueix la complexitat innecessària i ajuda els equips a centrar-se en oferir funcionalitats essencials. Tenint en compte YAGNI, els desenvolupadors poden millorar la productivitat, el manteniment i l'èxit global del projecte. Tanmateix, és important fer un equilibri i no malinterpretar YAGNI com a excusa per descuidar la previsió o les consideracions arquitectòniques.
Preguntes freqüents de YAGNI
Q1. Quines són les crítiques a YAGNI?
Hi ha gent que diu que YAGNI té un inconvenient. Argumenten que si només penseu en el que necessiteu ara mateix i ignoreu les possibles necessitats futures, potser haureu de tornar a fer gran part del vostre treball més tard quan apareguin nous requisits.
P2. Quines són les regles YAGNI?
No ho necessitareu. YAGNI és un principi de desenvolupament de programari que es deriva de la programació extrema (XP) que estableix que el programador no hauria d'afegir funcionalitats addicionals fins que sigui necessari.
P3. Quins són els arguments a favor del principi YAGNI?
S'evita un canvi de funció que significa que un desenvolupador no utilitzarà una funcionalitat que gairebé no s'utilitzarà en el futur.
fitxer obert en java
P4. Quina diferència hi ha entre SOLID i YAGNI?
SOLID espera que tingueu una idea, encara que sigui una mica, sobre com podria canviar el codi en el futur, especialment amb el principi de responsabilitat únic (SRP). Això és com tenir l'esperança de poder predir algunes coses. D'altra banda, YAGNI suposa que la majoria de vegades no saps cap a on es dirigeix el codi en el futur. És com tenir una mica de dubte sobre la nostra capacitat de predir.