𝗧𝗵𝗲 𝗪𝗼𝗿𝗸𝗲𝗱 𝗘𝘅𝗮𝗺𝗽𝗹𝗲 𝗧𝗵𝗮𝘁 𝗗𝗶𝘀𝗮𝗴𝗿𝗲𝗲𝗱 𝗪𝗶𝘁𝗵 𝗜𝘁𝘀 𝗢𝘄𝗻 𝗖𝗮𝗹𝗰𝘂𝗹𝗮𝘁𝗼𝗿
నేను ఇంటి మెరుగుదల ఖర్చుల కాలిక్యులేటర్ల కోసం ఒక వెబ్సైట్ను నడుపుతున్నాను.
ప్రతి పేజీలో ఖర్చులను నాలుగు చోట్ల చూపిస్తుంది:
- ఒక ఇంటరాక్టివ్ విడ్జెట్.
- ఒక స్టాటిక్ రిఫరెన్స్ టేబుల్.
- టెక్స్ట్లో వ్రాయబడిన ఉదాహరణలు.
- ఒక FAQ విభాగం.
నాకు ఒక పెద్ద బగ్ కనిపించింది. ఒక వ్రాయబడిన ఉదాహరణలో ప్రాజెక్ట్ ఖర్చు $62,300 అని ఉంది. అదే ప్రాజెక్ట్ ఖర్చు విడ్జెట్లో $56,779 అని ఉంది.
అక్కడ $5,500 తేడా ఉంది.
ఆ నంబర్లు యాదృచ్ఛికంగా వచ్చినవి కావు. అవి వేర్వేరు దాగి ఉన్న ఊహల (assumptions) నుండి వచ్చాయి. వ్రాయబడిన టెక్స్ట్ కొత్త HVAC యూనిట్ను ఊహించింది. విడ్జెట్ మీరు ఉన్న సిస్టమ్నే ఉపయోగిస్తారని ఊహించింది. రెండూ సరైనవే, కానీ అవి ఒకదానితో ఒకటి అనుసంధానించబడలేదు.
ఇది ఒక సాధారణ వైఫల్యం. మీరు ఒకే విషయాన్ని రెండు చోట్ల నిల్వ చేసినప్పుడు, అవి ఒకదానికొకటి భిన్నంగా మారుతాయి. మీరు కేవలం కంటెంట్ను మాత్రమే డూప్లికేట్ చేయడం లేదు, డేటాను కూడా డూప్లికేట్ చేస్తున్నారు.
నేను దీనిని 'source-first' అని పిలిచే ఒక నియమంతో సరిదిద్దాను. దీనికి రెండు భాగాలు ఉన్నాయి.
మొదటి భాగం: ఖర్చు అనేది ఒకే ఒక చోట ఉండాలి.
నేను నా టెక్స్ట్ మరియు టేబుల్స్లో నంబర్లను టైప్ చేయడం ఆపివేశాను. ఇప్పుడు, కాలిక్యులేటర్ ఫంక్షన్ మాత్రమే ఏకైక మూలం (source). బిల్డ్ ప్రాసెస్ సమయంలో టేబుల్స్ మరియు వ్రాయబడిన ఉదాహరణలు నేరుగా ఆ ఫంక్షన్ నుండి నంబర్లను తీసుకుంటాయి. ఒకవేళ ఫంక్షన్ మారితే, పేజీలోని ప్రతి నంబర్ ఆటోమేటిక్గా మారుతుంది. నంబర్లు ఒకే విలువను కలిగి ఉండటం వల్ల వాటి మధ్య తేడా ఉండదు.
రెండవ భాగం: ప్రతి నంబర్ దాని మూలాన్ని (origin) చూపాలి.
ఖర్చు డేటా అనేది శాశ్వతమైన విషయం కాదు. అది కాలం చెందుతుంది. నేను ప్రతి కాలిక్యులేషన్కు ఒక చిన్న డేటా ఆబ్జెక్ట్ను జోడించాను. అది వీటిని చూపుతుంది:
- ఉపయోగించిన సినారియో.
- డేటా యొక్క మూలం.
- అది యాక్సెస్ చేసిన తేదీ.
- డేటాను ఎప్పుడు సమీక్షించాలో.
ఇది డేటాను ఖచ్చితంగా ఉంచుతుంది. ఒకవేళ మూల డేటా తప్పుగా ఉంటే, మొత్తం సైట్ తప్పుగా ఉంటుంది. కానీ కనీసం సైట్ స్థిరంగా (consistent) ఉంటుంది. వినియోగదారుడు వైరుధ్యాన్ని వెంటనే గమనిస్తాడు. అది నమ్మకాన్ని దెబ్బతీస్తుంది.
పాఠం సరళమైనది:
- ఒక పేజీలోని రెండు చోట్ల ఒకే నంబర్ కనిపిస్తే, ఒకటి దానిని ఇంపోర్ట్ చేసుకోవాలి. మళ్ళీ టైప్ చేయవద్దు.
- డేటాను సింక్ చేయడానికి మీ బిల్డ్ ప్రాసెస్ను ఉపయోగించండి. ఇది క్రమశిక్షణ సమస్యను సాంకేతికపరంగా అసాధ్యమైనదిగా మారుస్తుంది.
- ఒక ఫంక్షన్ ఇప్పటికే లెక్కించే నంబర్లను చేత్తో రాయడం ఆపండి.
నేను నంబర్లను వ్రాయడానికి బదులుగా, వాటిని తొలగించడానికి ఒక రోజంతా గడిపాను. నా కోడ్బేస్ చిన్నదిగా మారింది మరియు అది ఇకపై నా వినియోగదారులకు అబద్ధాలు చెప్పదు.
Source: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9