একটি কাজের উদাহরণ যা তার নিজস্ব ক্যালকুলেটরের সাথে দ্বিমত পোষণ করেছিল

আমি হোম ইমপ্রুভমেন্ট কস্ট ক্যালকুলেটর সম্বলিত একটি ওয়েবসাইট পরিচালনা করি।

প্রতিটি পেজে একই খরচ চারটি ভিন্ন স্থানে দেখানো হয়:

আমি একটি বাগ (bug) খুঁজে পেয়েছি। একটি লিখিত উদাহরণে একটি প্রকল্পের খরচ $৬২,৩০০ বলা ছিল। ক্যালকুলেটর উইজেটটি একই প্রকল্পের খরচ $৫৬,৭৭৯ দেখাচ্ছিল।

পার্থক্য ছিল $৫,৫০০।

এই ভুলটি হয়েছিল কারণ আমি সংখ্যাগুলো হাতে লিখেছিলাম। আমি কোডের তুলনায় টেক্সটের জন্য ভিন্ন ভিন্ন ধারণা (assumptions) ব্যবহার করেছিলাম। টেক্সটে একটি নতুন HVAC ইউনিটের কথা ধরা হয়েছিল। কোডে বিদ্যমান সিস্টেমের কথা ধরা হয়েছিল। উভয়ই সঠিক ছিল, কিন্তু তারা একে অপরের সাথে মিল ছিল না।

এটি একটি সাধারণ ব্যর্থতা। যখন আপনি একই তথ্য দুটি ভিন্ন স্থানে সংরক্ষণ করেন, তখন তাদের মধ্যে অমিল তৈরি হয়।

আমি দুটি নিয়মের মাধ্যমে এটি সমাধান করেছি।

নিয়ম ১: সোর্স-ফার্স্ট লজিক (Source-first logic)।

ক্যালকুলেটর ফাংশনটিই হলো একমাত্র জায়গা যেখানে একটি সংখ্যা তৈরি হয়। আমি এখন আর টেবিল বা প্যারাগ্রাফে সংখ্যা টাইপ করি না। পরিবর্তে, আমি বিল্ড টাইমে (build time) টেবিল এবং উদাহরণগুলো তৈরি করতে ফাংশনটি ব্যবহার করি।

যদি ফাংশনটি পরিবর্তিত হয়, তবে পুরো পেজটি পরিবর্তিত হয়ে যায়। টেবিল এবং উইজেট সর্বদা একমত থাকবে কারণ তারা একই লজিক ব্যবহার করে।

নিয়ম ২: প্রোভেন্যান্স (provenance) যোগ করা।

একটি সংখ্যা তখনই কার্যকর যখন আপনি জানেন এটি কোথা থেকে এসেছে। প্রতিটি ক্যালকুলেশনে এখন অন্তর্ভুক্ত থাকে:

খরচের ডেটা কোনো স্থায়ী তথ্য নয়। এটি একটি পরিবর্তনশীল বা ক্ষণস্থায়ী তথ্য। একটি রিভিউ ডেট যোগ করা আমাকে ভুল হওয়ার আগেই ডেটা আপডেট করার কথা মনে করিয়ে দেয়।

একটি সিঙ্গেল সোর্স অফ ট্রুথ (single source of truth) আপনাকে সামঞ্জস্যপূর্ণ করে তোলে। প্রোভেন্যান্স যোগ করা আপনাকে সৎ করে তোলে।

আপনি যদি দুটি স্থানে একই সংখ্যা দেখান, তবে সেটি পুনরায় টাইপ করবেন না। এটি ইমপোর্ট (import) করুন। আপনার বিল্ড প্রসেসকে ডুপ্লিকেশন বা পুনরাবৃত্তি সামলাতে দিন।

উৎস: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9