Ragionando di aspettare fino alla terza volta nella Regola dei tre?


16

Mi sono appena imbattuto nell'articolo " Regola dei tre " su Wikipedia

La regola del tre è una regola pratica per il refactoring del codice per decidere quando un pezzo di codice replicato dovrebbe essere sostituito da una nuova procedura. Indica che il codice può essere copiato una volta, ma che quando lo stesso codice viene utilizzato tre volte, dovrebbe essere estratto in una nuova procedura. La regola fu introdotta da Martin Fowler in Refactoring e attribuita a Don Roberts.

So che questa è solo una regola empirica, ma perché si consiglia di refactoring solo dopo la seconda duplicazione? C'è qualche aspetto negativo nel refactoring quando scriviamo la prima duplicazione?


2
Vedere Due è un numero impossibile e la regola Zero-One-Infinity per un'altra serie di prospettive.
AakashM,

Quando si parla di sviluppo di software, il Wiki originale è spesso una fonte molto migliore di Wikipedia. Dopotutto, Ward Cunningham ha inventato il Wiki come mezzo per parlare dello sviluppo del software. Vedi C2.Com/cgi/wiki?RuleOfThree
Jörg W Mittag

2
Se ci sono 2 scenari da riutilizzare, puoi ramificare facilmente la logica (if, else). Una volta che raggiungono tre possibili percorsi, diventa più facile ricodificare che replicare e mantenere.
Andrew Lewis,


Penso che sia una comoda scusa per copiare e incollare, quando si può effettivamente riformattare e generalizzare. Quando ottieni il terzo caso, puoi generalizzare di più.
Alexey,

Risposte:


17

Penso che questa regola empirica esista perché è facile farsi prendere dal gioco "What if ..." quando si progetta il codice per la prima volta o dopo la prima duplicazione. In alcuni casi ho riscontrato una grave paralisi dell'analisi perché le persone hanno iniziato a progettare funzionalità che potrebbero essere necessarie in seguito. Ma non è necessario per il problema immediato a portata di mano.

Esiste un'arte per progettare / scrivere solo ciò di cui hai bisogno, pur mantenendo il codice suscettibile di futuri factoring.


8
È un buon punto. Nella mia esperienza, avere una terza copia rende anche i punti in comune e le differenze un po 'più nitidi rispetto a solo due.
Daniel B,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.