আমার ইউনিট পরীক্ষাগুলিতে, আমি প্রায়শই আমার কোডটিতে স্বেচ্ছাচারিত মানগুলি ছুঁড়ে দিয়ে দেখি এটি কী করে। উদাহরণস্বরূপ, যদি আমি জানি যে foo(1, 2, 3)
17 টি ফেরার কথা রয়েছে তবে আমি এটি লিখতে পারি:
assertEqual(foo(1, 2, 3), 17)
এই সংখ্যাগুলি নিখুঁতভাবে স্বেচ্ছাসেবী এবং এর কোনও বিস্তৃত অর্থ নেই (এগুলি উদাহরণস্বরূপ সীমানা শর্ত নয়, যদিও আমি সেগুলিও পরীক্ষা করি)। আমি এই সংখ্যার জন্য ভাল নাম নিয়ে আসতে লড়াই করব, এবং এর মতো কিছু লেখা const int TWO = 2;
অবশ্যই অসহনীয়। পরীক্ষাগুলি এভাবে লেখার জন্য কি ঠিক আছে, বা আমি সংখ্যাগুলি ধ্রুবকগুলিতে বের করবো?
ইন সব ম্যাজিক নম্বর একই তৈরি করা হয়? , আমরা শিখেছি যে যাদুর সংখ্যাগুলি ঠিক আছে যদি এর অর্থ প্রাসঙ্গিক থেকে স্পষ্ট হয় তবে এই ক্ষেত্রে সংখ্যার আসলে কোনও অর্থ হয় না।
const int TWO = 2;
কেবল ব্যবহারের চেয়েও খারাপ 2
। এটি এর আত্মা লঙ্ঘন করার অভিপ্রায় নিয়ে রুলের শব্দটির সাথে সঙ্গতিপূর্ণ।
foo
হবে তখন এর কোনও অর্থ হবে না এবং তাই পরামিতিগুলি। কিন্তু বাস্তবে, আমি নিশ্চিত ফাংশন যা নাম নেই, এবং পরামিতি নাম না থাকে bar1
, bar2
এবং bar3
। নামগুলির একটি অর্থ আছে যেখানে একটি আরও বাস্তব উদাহরণ তৈরি করুন , তারপরে পরীক্ষার ডেটা মানগুলির একটি নামও প্রয়োজন কিনা তা নিয়ে আলোচনা করা আরও বেশি অর্থবোধ করে।
1, 2, 3
3 ডি অ্যারে সূচকগুলি যেখানে আপনি পূর্বে মানটি সংরক্ষণ করেছিলেন17
, তবে আমি মনে করি এই পরীক্ষাটি ড্যানডি হবে (যতক্ষণ না আপনার কিছু নেতিবাচক পরীক্ষাও রয়েছে)। তবে যদি এটি কোনও গণনার ফলাফল হয় তবে আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে এই পরীক্ষাটি পড়ার কেউ বুঝতে হবে কেনfoo(1, 2, 3)
হওয়া উচিত17
, এবং ম্যাজিক সংখ্যা সম্ভবত সেই লক্ষ্য অর্জন করতে পারে না।