Il YAGNI "principio" afferma che non è necessario concentrarsi sulla funzionalità prima di averne bisogno, poiché "non ne avrete bisogno" comunque.Quando violare YAGNI?
Di solito tendo ad usare il buon senso sopra qualsiasi regola, non importa cosa, ma ci sono alcune volte in cui ritengo che sia utile sovradimensionare il design o la prova futura se hai delle buone ragioni, anche se è possibile che non lo farai mai usalo
Il caso reale che ho tra le mani in questo momento è più o meno così:
Ho un'applicazione che deve correre più di un semplice proprietaria protocollo di comunicazione (livello OSI 4). Questo protocollo ha un insieme desiderabile di caratteristiche (come la seguente specifica NORM) che forniscono robustezza all'applicazione ma che non sono strettamente richieste (il multicast UDP potrebbe essere accettabile).
C'è anche il fatto che l'applicazione è probabilmente (ma non sicuramente) utilizzata da altri client in futuro che non avranno accesso alla soluzione proprietaria e, quindi, avrà bisogno di un'altra soluzione. So per certo che la probabilità di un altro client per l'applicazione è alta.
Allora, che ne pensi? Dovrei semplicemente progettare per il protocollo proprietario e lasciare il refactoring, l'estrazione dell'interfaccia e così via a quando ne ho davvero bisogno o dovrei fare il design ora pensando al futuro (non così lontano)?
Nota: Giusto per essere chiari, io sono interessato a sentire tutti i tipi di opinioni per la questione generale (quando a violare YAGNI), ma mi piacerebbe molto qualche consiglio o pensieri sul mio attuale dilemma :)
Questo è più appropriatamente richiesto su http://programmers.stackexchange.com al giorno d'oggi ... –
Immaginate i sistemi di datazione COBOL che utilizzavano solo 2 cifre per l'anno. Sarebbe una buona area per violare YAGNI :) –