Nel libro The Pragmatic Programmer , gli autori menzionano il concetto di programmazione per coincidenza . Spiega cos'è, perché è causato, quali sono i pericoli che potresti incontrare e si confronta con un campo minato in una guerra.
Hai mai visto vecchi film di guerra in bianco e nero? Il soldato stanco avanza cautamente dalla spazzola. C'è una radura in vista: ci sono mine terrestri o è sicuro attraversare? Non ci sono indicazioni che si tratti di un campo minato: nessun segno, filo spinato o crateri. Il soldato colpisce il terreno davanti a sé con la sua baionetta e sussulti, aspettandosi un'esplosione. Non ce n'è uno. Quindi procede minuziosamente attraverso il campo per un po ', stimolando e frugando mentre procede. Alla fine, convinto che il campo sia sicuro, si raddrizza e marcia orgogliosamente in avanti, per poi essere fatto a pezzi.
Le prime sonde del soldato per le mine non rivelarono nulla, ma questo fu semplicemente fortunato. Fu condotto a una falsa conclusione, con risultati disastrosi.
Come sviluppatori, lavoriamo anche nei campi minati. Ci sono centinaia di trappole che aspettano solo di prenderci ogni giorno. Ricordando la storia del soldato, dovremmo essere cauti nel trarre conclusioni false. Dovremmo evitare la programmazione per coincidenza - basandoci sulla fortuna e sui successi accidentali - a favore della programmazione deliberatamente ...
Ma non sono molto soddisfatto del modo in cui descrivono il problema "come superarlo". Sì, devi pensare in anticipo prima di scrivere il codice, ma come esercitarlo? L'unica cosa che posso pensare è l'aggiunta di funzionalità ai progetti Open source esistenti, in cui è necessario conoscere sia il "cosa sto facendo ora" sia il "Come funzionano gli altri pezzi di codice", e non è così applicabile quando scrivi i tuoi progetti.
MODIFICARE:
un riassunto dei tuoi post:
- Non indovinare la tua prossima mossa, dimostra che è corretta
- Unit test e refactor il più possibile, quando necessario
- Aggiungi funzionalità – compila – prova spesso
- Se non riesci a spiegare il codice a un noob, probabilmente stai programmando per coincidenza.
A proposito, è difficile accettare una risposta, è davvero difficile. Tutte le risposte sono davvero fantastiche :)