Ví dụ thực tế lại mâu thuẫn với chính công cụ tính toán của nó

Tôi điều hành một trang web về các công cụ tính toán chi phí cải tạo nhà cửa.

Mỗi trang hiển thị chi phí ở bốn vị trí:

Tôi đã phát hiện một lỗi nghiêm trọng. Một ví dụ viết tay cho biết chi phí dự án là 62.300 USD. Trong khi đó, widget lại cho biết cùng dự án đó chỉ tốn 56.779 USD.

Có một khoảng chênh lệch 5.500 USD.

Những con số này không phải ngẫu nhiên. Chúng đến từ các giả định ngầm khác nhau. Văn bản viết giả định rằng sẽ lắp một hệ thống HVAC mới. Widget lại giả định rằng bạn sẽ sử dụng hệ thống hiện có. Cả hai đều không sai, nhưng chúng không "nói chuyện" với nhau.

Đây là một lỗi phổ biến. Khi bạn lưu cùng một sự thật ở hai nơi, chúng sẽ dần trở nên sai lệch. Bạn không chỉ đang nhân bản nội dung. Bạn đang nhân bản cả dữ liệu.

Tôi đã khắc phục điều này bằng một quy tắc mà tôi gọi là source-first (ưu tiên nguồn). Nó gồm hai phần.

Phần một: Một mức chi phí chỉ tồn tại ở một nơi duy nhất.

Tôi đã ngừng việc nhập số thủ công vào văn bản và bảng biểu. Giờ đây, hàm tính toán là nguồn duy nhất. Các bảng và ví dụ viết tay sẽ lấy số trực tiếp từ hàm đó trong quá trình build. Nếu hàm thay đổi, mọi con số trên trang sẽ tự động thay đổi theo. Bạn không thể gặp tình trạng sai lệch vì các con số đều có cùng một giá trị.

Phần hai: Mọi con số đều phải hiển thị nguồn gốc của nó.

Dữ liệu chi phí không phải là một sự thật vĩnh viễn. Nó có thời hạn. Tôi đã thêm một đối tượng dữ liệu nhỏ vào mỗi phép tính. Nó hiển thị:

Điều này giúp dữ liệu luôn trung thực. Nếu dữ liệu nguồn sai, toàn bộ trang web sẽ sai. Nhưng ít nhất, trang web sẽ nhất quán. Người dùng sẽ nhận ra sự mâu thuẫn ngay lập tức. Điều đó sẽ phá hủy niềm tin.

Bài học rất đơn giản:

Tôi đã dành cả một ngày để xóa các con số thay vì viết chúng. Mã nguồn của tôi gọn nhẹ hơn và nó không còn nói dối người dùng nữa.

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