הדוגמה המחושבת שלא תאמה את המחשבון שלה
אני מנהל אתר למחשבוני עלויות לשיפור הבית.
כל דף מציג עלויות בארבעה מקומות:
- ווידג'ט אינטראקטיבי.
- טבלת ייחוס סטטית.
- דוגמאות כתובות בטקסט.
- מדור שאלות ותשובות (FAQ).
מצאתי באג משמעותי. דוגמה כתובה ציינה שפרויקט עלה 62,300$. הווידג'ט ציין שאותו פרויקט עלה 56,779$.
היה פער של 5,500$.
המספרים לא היו אקראיים. הם הגיעו מהנחות יסוד נסתרות שונות. הטקסט הכתוב הניח התקנה של יחידת HVAC חדשה. הווידג'ט הניח שתשתמשו במערכת הקיימת. שניהם היו תקינים, אך הם לא "דיברו" אחד עם השני.
זהו כשל נפוץ. כשמאחסנים את אותה עובדה בשני מקומות, הם מתרחקים זה מזה. אתם לא רק משכפלים תוכן; אתם משכפלים נתונים.
תיקנתי זאת באמצעות כלל שאני מכנה source-first. הוא מורכב משני חלקים.
חלק ראשון: עלות קיימת רק במקום אחד.
הפסקתי להקליד מספרים בטקסט ובטבלאות שלי. כעת, פונקציית המחשבון היא המקור היחיד. הטבלאות והדוגמאות הכתובות שואבות את המספרים שלהן ישירות מאותה פונקציה במהלך תהליך ה-build. אם הפונקציה משתנה, כל מספר בדף משתנה באופן אוטומטי. לא יכול להיווצר חוסר התאמה כי המספרים הם בעלי אותו ערך.
חלק שני: כל מספר חייב להציג את מקורו.
נתוני עלות אינם עובדה קבועה. הם פגים. הוספתי אובייקט נתונים קטן לכל חישוב. הוא מציג:
- התרחיש ששימש לחישוב.
- מקור הנתונים.
- התאריך שבו הנתונים נבדקו.
- מתי יש לבחון מחדש את הנתונים.
זה שומר על אמינות הנתונים. אם נתוני המקור שגויים, כל האתר יהיה שגוי. אבל לפחות האתר יהיה עקבי. משתמש מבחין בסתירה באופן מיידי. זה הורס את האמון.
הלקח הוא פשוט:
- אם שני מקומות בדף מציגים את אותו מספר, אחד מהם צריך לייבא אותו. אל תקלידו אותו מחדש.
- השתמשו בתהליך ה-build שלכם כדי לסנכרן נתונים. זה הופך בעיה של משמעת לבלתי אפשרית מבחינה טכנית.
- הפסיקו לכתוב ידנית מספרים שפונקציה כבר מחשבת.
ביליתי יום שלם במחיקת מספרים במקום בכתיבתם. בסיס הקוד שלי קטן יותר והוא כבר לא משקר למשתמשים שלי.
מקור: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9