הדוגמה המחושבת שלא תאמה את המחשבון שלה

אני מנהל אתר למחשבוני עלויות לשיפור הבית.

כל דף מציג עלויות בארבעה מקומות:

מצאתי באג משמעותי. דוגמה כתובה ציינה שפרויקט עלה 62,300$. הווידג'ט ציין שאותו פרויקט עלה 56,779$.

היה פער של 5,500$.

המספרים לא היו אקראיים. הם הגיעו מהנחות יסוד נסתרות שונות. הטקסט הכתוב הניח התקנה של יחידת HVAC חדשה. הווידג'ט הניח שתשתמשו במערכת הקיימת. שניהם היו תקינים, אך הם לא "דיברו" אחד עם השני.

זהו כשל נפוץ. כשמאחסנים את אותה עובדה בשני מקומות, הם מתרחקים זה מזה. אתם לא רק משכפלים תוכן; אתם משכפלים נתונים.

תיקנתי זאת באמצעות כלל שאני מכנה source-first. הוא מורכב משני חלקים.

חלק ראשון: עלות קיימת רק במקום אחד.

הפסקתי להקליד מספרים בטקסט ובטבלאות שלי. כעת, פונקציית המחשבון היא המקור היחיד. הטבלאות והדוגמאות הכתובות שואבות את המספרים שלהן ישירות מאותה פונקציה במהלך תהליך ה-build. אם הפונקציה משתנה, כל מספר בדף משתנה באופן אוטומטי. לא יכול להיווצר חוסר התאמה כי המספרים הם בעלי אותו ערך.

חלק שני: כל מספר חייב להציג את מקורו.

נתוני עלות אינם עובדה קבועה. הם פגים. הוספתי אובייקט נתונים קטן לכל חישוב. הוא מציג:

זה שומר על אמינות הנתונים. אם נתוני המקור שגויים, כל האתר יהיה שגוי. אבל לפחות האתר יהיה עקבי. משתמש מבחין בסתירה באופן מיידי. זה הורס את האמון.

הלקח הוא פשוט:

ביליתי יום שלם במחיקת מספרים במקום בכתיבתם. בסיס הקוד שלי קטן יותר והוא כבר לא משקר למשתמשים שלי.

מקור: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9