𝗧𝗵𝗲 𝗪𝗼𝗿𝗸𝗲𝗱 𝗘𝘅𝗮𝗺𝗽𝗹𝗲 𝗧𝗵𝗮𝘁 𝗗𝗶𝘀𝗮𝗴𝗿𝗲𝗲𝗱 𝗪𝗶𝘁𝗵 𝗜𝘁𝘀 𝗢𝘄𝗻 𝗖𝗮𝗹𝗰𝘂𝗹𝗮𝘁𝗼𝗿
ನಾನು ಮನೆ ಸುಧಾರಣಾ ವೆಚ್ಚಗಳ ಕ್ಯಾಲ್ಕುಲೇಟರ್ಗಳ (home improvement cost calculators) ವೆಬ್ಸೈಟ್ ಅನ್ನು ನಡೆಸುತ್ತಿದ್ದೇನೆ.
ಪ್ರತಿ ಪುಟವು ನಾಲ್ಕು ಸ್ಥಳಗಳಲ್ಲಿ ವೆಚ್ಚಗಳನ್ನು ತೋರಿಸುತ್ತದೆ:
- ಒಂದು ಇಂಟರಾಕ್ಟಿವ್ ವಿಜೆಟ್ (interactive widget).
- ಒಂದು ಸ್ಟ್ಯಾಟಿಕ್ ರೆಫರೆನ್ಸ್ ಟೇಬಲ್ (static reference table).
- ಪಠ್ಯದಲ್ಲಿರುವ ಬರೆದ ಉದಾಹರಣೆಗಳು.
- ಒಂದು FAQ ವಿಭಾಗ.
ನನಗೆ ಒಂದು ದೊಡ್ಡ ದೋಷ (bug) ಕಂಡುಬಂದಿತು. ಒಂದು ಬರೆದ ಉದಾಹರಣೆಯು ಯೋಜನೆಯ ವೆಚ್ಚ $62,300 ಎಂದು ಹೇಳುತ್ತಿತ್ತು. ಆದರೆ ವಿಜೆಟ್ ಅದೇ ಯೋಜನೆಯ ವೆಚ್ಚ $56,779 ಎಂದು ಹೇಳುತ್ತಿತ್ತು.
ಅಲ್ಲಿ $5,500 ರ ವ್ಯತ್ಯಾಸವಿತ್ತು.
ಆ ಸಂಖ್ಯೆಗಳು ಯಾದೃಚ್ಛಿಕವಾಗಿರಲಿಲ್ಲ. ಅವು ವಿಭಿನ್ನ ಗುಪ್ತ ಕಲ್ಪನೆಗಳಿಂದ ಬಂದಿದ್ದವು. ಬರೆದ ಪಠ್ಯವು ಹೊಸ HVAC ಯೂನಿಟ್ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಂಡಿತ್ತು. ವಿಜೆಟ್ ನೀವು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸುತ್ತೀರಿ ಎಂದು ಕಲ್ಪಿಸಿಕೊಂಡಿತ್ತು. ಎರಡೂ ಸರಿಯಾಗಿದ್ದವು, ಆದರೆ ಅವು ಒಂದಕ್ಕೊಂದು ಹೊಂದಾಣಿಕೆಯಾಗしていರಲಿಲ್ಲ.
ಇದು ಸಾಮಾನ್ಯ ವೈಫಲ್ಯವಾಗಿದೆ. ನೀವು ಒಂದೇ ಸತ್ಯವನ್ನು ಎರಡು ಸ್ಥಳಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಿದಾಗ, ಅವುಗಳ ನಡುವೆ ವ್ಯತ್ಯಾಸ ಉಂಟಾಗುತ್ತದೆ. ನೀವು ಕೇವಲ ವಿಷಯವನ್ನು (content) ನಕಲಿಸುತ್ತಿಲ್ಲ; ನೀವು ಡೇಟಾವನ್ನು (data) ನಕಲಿಸುತ್ತಿದ್ದೀರಿ.
ನಾನು ಇದನ್ನು 'source-first' ಎಂದು ಕರೆಯುವ ನಿಯಮದ ಮೂಲಕ ಸರಿಪಡಿಸಿದೆ. ಇದು ಎರಡು ಭಾಗಗಳನ್ನು ಹೊಂದಿದೆ.
ಭಾಗ ಒಂದು: ವೆಚ್ಚವು ಕೇವಲ ಒಂದು ಸ್ಥಳದಲ್ಲಿ ಮಾತ್ರ ಇರಲಿ.
ನಾನು ನನ್ನ ಪಠ್ಯ ಮತ್ತು ಟೇಬಲ್ಗಳಲ್ಲಿ ಸಂಖ್ಯೆಗಳನ್ನು ಟೈಪ್ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿದೆ. ಈಗ, ಕ್ಯಾಲ್ಕುಲೇಟರ್ ಫಂಕ್ಷನ್ (calculator function) ಒಂದೇ ಏಕೈಕ ಮೂಲವಾಗಿದೆ. ಬಿಲ್ಡ್ ಪ್ರಕ್ರಿಯೆಯ ಸಮಯದಲ್ಲಿ (build process), ಟೇಬಲ್ಗಳು ಮತ್ತು ಬರೆದ ಉದಾಹರಣೆಗಳು ಆ ಫಂಕ್ಷನ್ನಿಂದ ನೇರವಾಗಿ ಸಂಖ್ಯೆಗಳನ್ನು ಪಡೆಯುತ್ತವೆ. ಒಂದು ವೇಳೆ ಫಂಕ್ಷನ್ ಬದಲಾದರೆ, ಪುಟದಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಸಂಖ್ಯೆಯೂ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಬದಲಾಗುತ್ತದೆ. ಸಂಖ್ಯೆಗಳು ಒಂದೇ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿರುವುದರಿಂದ ಯಾವುದೇ ವ್ಯತ್ಯಾಸ ಉಂಟಾಗಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಭಾಗ ಎರಡು: ಪ್ರತಿಯೊಂದು ಸಂಖ್ಯೆಯು ತನ್ನ ಮೂಲವನ್ನು ತೋರಿಸಬೇಕು.
ವೆಚ್ಚದ ಡೇಟಾ ಶಾಶ್ವತ ಸತ್ಯವಲ್ಲ. ಅದು ಕಾಲಾವಧಿಯೊಂದಿಗೆ ಅಸಿಂಧುವಾಗುತ್ತದೆ (expires). ನಾನು ಪ್ರತಿಯೊಂದು ಲೆಕ್ಕಾಚಾರಕ್ಕೆ ಒಂದು ಸಣ್ಣ ಡೇಟಾ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಸೇರಿಸಿದೆ. ಅದು ಈ ಕೆಳಗಿನವುಗಳನ್ನು ತೋರಿಸುತ್ತದೆ:
- ಬಳಸಲಾದ ಸನ್ನಿವೇಶ (scenario).
- ಡೇಟಾದ ಮೂಲ (source).
- ಅದನ್ನು ಪ್ರವೇಶಿಸಿದ ದಿನಾಂಕ.
- ಡೇಟಾವನ್ನು ಯಾವಾಗ ಪರಿಶೀಲಿಸಬೇಕು.
ಇದು ಡೇಟಾವನ್ನು ನಿಖರವಾಗಿಡುತ್ತದೆ. ಮೂಲ ಡೇಟಾ ತಪ್ಪಾಗಿದ್ದರೆ, ಇಡೀ ಸೈಟ್ ತಪ್ಪಾಗುತ್ತದೆ. ಆದರೆ ಕನಿಷ್ಠ ಪಕ್ಷ ಸೈಟ್ ಸುಸಂಬದ್ಧವಾಗಿರುತ್ತದೆ (consistent). ಬಳಕೆದಾರರು ವಿರೋಧಾಭಾಸವನ್ನು ತಕ್ಷಣವೇ ಗಮನಿಸುತ್ತಾರೆ. ಅದು ನಂಬಿಕೆಯನ್ನು ಹಾಳುಮಾಡುತ್ತದೆ.
ಪಾಠ ಸರಳವಾಗಿದೆ:
- ಒಂದು ಪುಟದ ಎರಡು ಸ್ಥಳಗಳಲ್ಲಿ ಒಂದೇ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸುತ್ತಿದ್ದರೆ, ಒಂದು ಸ್ಥಳವು ಅದನ್ನು ಇಂಪೋರ್ಟ್ (import) ಮಾಡಿಕೊಳ್ಳಬೇಕು. ಅದನ್ನು ಮತ್ತೆ ಟೈಪ್ ಮಾಡಬೇಡಿ.
- ಡೇಟಾವನ್ನು ಸಿಂಕ್ (sync) ಮಾಡಲು ನಿಮ್ಮ ಬಿಲ್ಡ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಬಳಸಿ. ಇದು ಶಿಸ್ತಿನ ಸಮಸ್ಯೆಯನ್ನು ತಾಂತ್ರಿಕವಾಗಿ ಅಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.
- ಒಂದು ಫಂಕ್ಷನ್ ಈಗಾಗಲೇ ಲೆಕ್ಕಹಾಕುವ ಸಂಖ್ಯೆಗಳನ್ನು ಕೈಯಿಂದ ಬರೆಯುವುದನ್ನು ನಿಲ್ಲಿಸಿ.
ನಾನು ಸಂಖ್ಯೆಗಳನ್ನು ಬರೆಯುವ ಬದಲು ಅವುಗಳನ್ನು ಅಳಿಸಲು ಒಂದು ದಿನವನ್ನು ಕಳೆದೆ. ನನ್ನ ಕೋಡ್ಬೇಸ್ (codebase) ಈಗ ಚಿಕ್ಕದಾಗಿದೆ ಮತ್ತು ಅದು ನನ್ನ ಬಳಕೆದಾರರಿಗೆ ಸುಳ್ಳು ಹೇಳುವುದಿಲ್ಲ.
Source: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9