𝗟'𝗲𝘀𝗲𝗺𝗽𝗶𝗼 𝘀𝘃𝗼𝗹𝘁𝗼 𝗰𝗵𝗲 𝗻𝗼𝗻 𝗰𝗼𝗻𝗰𝗼𝗿𝗱𝗮𝘃𝗮 𝗰𝗼𝗺𝗲 𝗰𝗼𝗹 𝗽𝗿𝗼𝗽𝗿𝗶𝗼 𝗰𝗮𝗹𝗰𝗼𝗹𝗮𝘁𝗼𝗿𝗲

Gestisco un sito di calcolatori di costi per la ristrutturazione della casa.

Ogni pagina mostra i costi in quattro punti:

Ho trovato un bug importante. Un esempio scritto indicava che un progetto costava $62.300. Il widget indicava che lo stesso progetto costava $56.779.

C'era una differenza di $5.500.

I numeri non erano casuali. Derivavano da diverse ipotesi implicite. Il testo scritto presupponeva una nuova unità HVAC. Il widget presupponeva l'uso del sistema esistente. Entrambi erano corretti, ma non comunicavano tra loro.

Questo è un errore comune. Quando memorizzi lo stesso dato in due punti diversi, questi tendono a divergere. Non stai solo duplicando contenuti. Stai duplicando dati.

Ho risolto il problema con una regola che chiamo source-first. Si divide in due parti.

Parte uno: Un costo esiste in un solo punto.

Ho smesso di digitare numeri nei miei testi e nelle mie tabelle. Ora, la funzione di calcolo è l'unica fonte. Le tabelle e gli esempi scritti prelevano i numeri direttamente da quella funzione durante il processo di build. Se la funzione cambia, ogni numero sulla pagina cambia automaticamente. Non può esserci un'incongruenza perché i numeri hanno lo stesso valore.

Parte due: Ogni numero deve mostrare la propria origine.

I dati sui costi non sono fatti permanenti. Scadono. Ho aggiunto un piccolo oggetto dati a ogni calcolo. Mostra:

Questo mantiene l'integrità dei dati. Se i dati alla fonte sono errati, l'intero sito sarà errato. Ma almeno il sito sarà coerente. Un utente nota immediatamente una contraddizione. E questo distrugge la fiducia.

La lezione è semplice:

Ho passato una giornata a cancellare numeri invece di scriverli. Il mio codebase è più piccolo e non mente più ai miei utenti.

Fonte: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9