தனது சொந்தக் கணக்கீட்டுடன் முரண்பட்ட ஒரு உதாரணம்

நான் வீட்டை மேம்படுத்துவதற்கான செலவுக் கணக்கீட்டிற்கான (home improvement cost calculators) ஒரு இணையதளத்தை நடத்தி வருகிறேன்.

ஒவ்வொரு பக்கமும் நான்கு இடங்களில் செலவுகளைக் காட்டுகிறது:

நான் ஒரு பெரிய பிழையைக் கண்டறிந்தேன். ஒரு எழுதப்பட்ட உதாரணம் ஒரு திட்டத்தின் செலவு $62,300 என்று கூறியது. ஆனால் விட்ஜெட் அதே திட்டத்தின் செலவு $56,779 என்று கூறியது.

அங்கு $5,500 வித்தியாசம் இருந்தது.

அந்த எண்கள் தற்செயலானவை அல்ல. அவை வெவ்வேறு மறைமுகக் கருத்துக்களிலிருந்து (hidden assumptions) வந்தன. எழுதப்பட்ட உரை ஒரு புதிய HVAC யூனிட்டை அடிப்படையாகக் கொண்டது. விட்ஜெட் நீங்கள் ஏற்கனவே உள்ள அமைப்பையே பயன்படுத்துவீர்கள் என்று கருதியது. இரண்டுமே சரியாக இருந்தன, ஆனால் அவை ஒன்றோடொன்று தொடர்பு கொள்ளவில்லை.

இது ஒரு பொதுவான தோல்வி. ஒரே தகவலை இரண்டு இடங்களில் சேமிக்கும்போது, அவை ஒன்றிலிருந்து ஒன்று விலகிச் செல்கின்றன. நீங்கள் உள்ளடக்கத்தை மட்டும் நகலெடுக்கவில்லை; தரவையும் (data) நகலெடுக்கிறீர்கள்.

இதை நான் 'source-first' என்று அழைக்கும் ஒரு விதியைக் கொண்டு சரி செய்தேன். இதில் இரண்டு பகுதிகள் உள்ளன.

பகுதி ஒன்று: ஒரு செலவு ஒரே ஒரு இடத்தில் மட்டுமே இருக்க வேண்டும்.

நான் எனது உரை மற்றும் அட்டவணைகளில் எண்களைத் தட்டச்சு செய்வதை நிறுத்திவிட்டேன். இப்போது, கணக்கீட்டுச் செயல்பாடு (calculator function) மட்டுமே ஒரே ஆதாரமாக உள்ளது. அட்டவணைகளும் எழுதப்பட்ட உதாரணங்களும் build process-ன் போது அந்தச் செயல்பாட்டிலிருந்து நேரடியாக எண்களைப் பெறுகின்றன. செயல்பாடு மாறினால், பக்கத்தில் உள்ள ஒவ்வொரு எண்ணும் தானாகவே மாறும். எண்கள் ஒரே மதிப்பாக இருப்பதால், முரண்பாடுகள் ஏற்பட வாய்ப்பில்லை.

பகுதி இரண்டு: ஒவ்வொரு எண்ணும் அதன் மூலத்தைக் காட்ட வேண்டும்.

செலவுத் தரவு என்பது ஒரு நிரந்தரமான உண்மை அல்ல. அது காலாவதியாகும். ஒவ்வொரு கணக்கீட்டிற்கும் ஒரு சிறிய தரவுப் பொருளை (data object) நான் சேர்த்துள்ளேன். அது பின்வருவனவற்றைக் காட்டுகிறது:

இது தரவை உண்மையாக வைத்திருக்க உதவுகிறது. மூலத் தரவு தவறாக இருந்தால், முழு இணையதளமும் தவறாக இருக்கும். ஆனால் குறைந்தபட்சம் இணையதளம் சீராக (consistent) இருக்கும். ஒரு பயனர் முரண்பாட்டை உடனடியாகக் கவனிப்பார். அது நம்பிக்கையைச் சிதைத்துவிடும்.

பாடம் எளிமையானது:

எண்களை எழுதுவதற்குப் பதிலாக அவற்றை நீக்குவதிலேயே நான் ஒரு நாளைச் செலவிட்டேன். எனது codebase இப்போது சிறியதாக உள்ளது மற்றும் அது இனி எனது பயனர்களை ஏமாற்றாது.

ஆதாரம்: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9