Contoh Pengiraan yang Tidak Selaras dengan Kalkulator Sendiri
Saya mengendalikan sebuah laman web dengan kalkulator kos penambahbaikan rumah.
Setiap halaman memaparkan kos yang sama di empat tempat berbeza:
- Sebuah widget interaktif.
- Jadual rujukan statik.
- Contoh prosa bertulis.
- Bahagian FAQ.
Saya menemui pepijat. Satu contoh bertulis menyatakan kos projek adalah $62,300. Widget kalkulator pula menyatakan projek yang sama berharga $56,779.
Perbezaannya adalah $5,500.
Ralat tersebut berlaku kerana saya menulis nombor-nombor itu secara manual. Saya menggunakan andaian yang berbeza untuk teks berbanding apa yang digunakan dalam kod. Teks tersebut mengandaikan unit HVAC baharu. Kod pula mengandaikan sistem sedia ada. Kedua-duanya sah, tetapi ia tidak sepadan.
Ini adalah kegagalan yang biasa berlaku. Apabila anda menyimpan fakta yang sama di dua tempat, ia akan mula menyimpang.
Saya membetulkan perkara ini dengan dua peraturan.
Peraturan 1: Logik mengutamakan sumber (Source-first logic).
Fungsi kalkulator adalah satu-satunya tempat di mana sesuatu nombor dihasilkan. Saya tidak lagi menaip nombor ke dalam jadual atau perenggan. Sebaliknya, saya menggunakan fungsi tersebut untuk menjana jadual dan contoh semasa waktu binaan (build time).
Jika fungsi berubah, keseluruhan halaman akan berubah. Jadual dan widget akan sentiasa selaras kerana ia menggunakan logik yang sama.
Peraturan 2: Tambah asal-usul (provenance).
Sesuatu nombor hanya berguna jika anda tahu dari mana ia datang. Setiap pengiraan kini merangkumi:
- Senario khusus yang digunakan.
- Sumber data.
- Tarikh ia dicapai.
- Tarikh luput untuk data tersebut.
Data kos bukanlah fakta kekal. Ia adalah fakta yang mudah berubah (perishable fact). Menambah tarikh semakan mengingatkan saya untuk mengemas kini data sebelum ia menjadi salah.
Satu sumber kebenaran (single source of truth) menjadikan anda konsisten. Menambah asal-usul (provenance) menjadikan anda jujur.
Jika anda memaparkan nombor yang sama di dua tempat, jangan taip semula. Import ia. Biarkan proses binaan anda mengendalikan penduplikatan tersebut.
Sumber: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9