Domanda

Come ho sempre assorbito Agile pensando al mio modo di lavorare, YAGNI ( "Lei non avrà bisogno") sembra diventare sempre più importante. Mi sembra di essere una delle regole più efficaci per filtrare le priorità sbagliate e decidere che cosa non per lavorare su successivo.

Ancora YAGNI sembra essere un concetto che è appena sussurrato circa qui a SO. Ho eseguito la ricerca obbligatoria, e si vede solo fino a un titolo di domanda -. E poi in un ruolo secondario

Perché è questo? Sto sopravvalutando la sua importanza?

di responsabilità. Per prevenire le risposte sono sicuro che metterò in obiezione, vorrei sottolineare che YAGNI è il opposto di quick-and-dirty . E ti incoraggia a mettere a fuoco il vostro tempo prezioso e fatica a ottenere le parti che fai bisogno di destra.

Ecco alcune domande in corso off-the-top si potrebbe chiedere.

Sono mio test di unità selezionati sulla base di esigenze degli utenti, o la struttura quadro?

Sono l'installazione (e collaudo e la manutenzione) unit test che sono lì solo perché cadono fuori del quadro?

Come la maggior parte del codice generato dal mio quadro non ho mai guardato (ma ancora me potrebbe mordere un giorno, anche se YAGNI)?

Quanto tempo sto spendendo a lavorare sui miei strumenti, piuttosto che problema dell'utente?

Quando coppia-programmazione, il valore il ruolo dell'osservatore si trova spesso in "YAGNI".

Non si utilizza uno strumento CRUD? Ha permette (anzi, incoraggiano) di utilizzarlo come strumento _RU_, o uno strumento di C__D, o stai creando quattro pezzi di codice (più quattro unit test) quando hai solo bisogno di uno o due?

È stato utile?

Soluzione

TDD è sussunto YAGNI in un certo senso. Se lo fai TDD correttamente, cioè, solo scrivere quei test che si traducono in funzionalità richiesta, quindi sviluppare il codice più semplice per superare la prova, allora si sta seguendo il principio YAGNI per impostazione predefinita. Nella mia esperienza, è solo quando ho fuori dagli schemi TDD e iniziare a scrivere codice prima di test, i test per cose che non ho davvero bisogno, o il codice che è più che il modo più semplice possibile per superare la prova che ho violare YAGNI .

Nella mia esperienza il secondo è il mio pas faux più comune quando si fa TDD - tendo a saltare avanti e iniziare a scrivere codice per superare il test successivo. Che si traduce spesso in me compromettere i test rimanenti da avere un'idea preconcetta sulla base di mio codice, piuttosto che i requisiti di ciò che deve essere testato.

YMMV.

Altri suggerimenti

YAGNI e Kiss (mantenerlo semplice, stupido) sono essenzialmente lo stesso principio. Purtroppo, vedo i KISS accennato circa le volte che vedo "YAGNI".

Nella parte del deserto mia, la causa più comune di ritardi e fallimenti dei progetti è cattiva esecuzione dei componenti non necessari, quindi sono d'accordo con il vostro sentimento di base.

la libertà di cambiare le unità YAGNI . In un progetto cascata, il mantra è controllare portata. Ambito di applicazione è controllata da stabilire un contratto con il cliente. Di conseguenza, il cliente infila tutto quello che possono pensare nel documento ambito sapendo che le modifiche alla portata sarà difficile una volta che il contratto è stato firmato. Come risultato, si finisce con le applicazioni che ha una lunga lista di caratteristiche, non un insieme di caratteristiche che hanno valore.

Con un progetto agile, il proprietario del prodotto costruisce un backlog di prodotto prioritario. Il team di sviluppo si basa caratteristiche in base alla priorità vale a dire, il valore. Di conseguenza, la roba più importante ottenere costruito prima. Si finisce con un'applicazione che ha caratteristiche che sono apprezzati dagli utenti. La roba che non è importante cade fuori dalla lista o non viene fatto. Questo è YAGNI.

Mentre YAGNI non è una pratica, si tratta di un risultato della lista arretrato priorità. Il business partner valorizza la flessibilità concessa il business dato che possono cambiare e assegnare la priorità product backlog da iterazione a iterazione. E 'sufficiente spiegare che YAGNI è il beneficio ottenuto quando abbiamo prontamente accettiamo il cambiamento, anche in ritardo nel processo.

Il problema che ho trovato è che le persone tendono a benna anche scrivere le fabbriche, l'uso di contenitori di (a meno che non hai già che nel tuo codebase) sotto YAGNI. Sono d'accordo con JB re lì. Per molte persone con cui ho lavorato YAGNI sembra essere la licenza di tagliare gli angoli / scrivere codice sciatta.

Per esempio, stavo scrivendo un API PinPad per astrarre PINPAD più modelli / produttori. Ho trovato se non ho la struttura complessiva, non posso scrivere anche mio test di unità. Può essere che non sono un praticante molto esperto del TDD. Sono sicuro che ci saranno opinioni divergenti sul fatto quello che ho fatto è YAGNI oppure no.

Ho visto un sacco di messaggi su SO referenziamento ottimizzazione prematura, che è una forma di YAGNI, o almeno ydniy (ancora non ne ha bisogno).

Non vedo YAGNI come l'opposto di sporco rapido e-, davvero. Si sta facendo proprio quello che è necessario e non di più e non di pianificazione come il software qualcuno scrive deve durare 50 anni. Può venire di rado, perché non ci sono davvero che molte domande da porre intorno ad esso, almeno a mio avviso. Simile al "Non ripetere te stesso" e "Keep it simple, stupid" regole che diventano comuni ma non sono necessariamente sezionati e analizzati in 101 modi. Alcune cose sono abbastanza semplici che di solito ottiene subito dopo aver fatto un po 'di pratica. Alcune cose si sviluppano dietro le quinte e se si gira intorno e guarda è possibile notare loro può essere un altro modo di affermare le cose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top