ইন এই নিবন্ধটি অ্যালেক্স Papadimoulis করে আপনি এই স্নিপেট দেখতে পারেন:
private void attachSupplementalDocuments()
{
if (stateCode == "AZ" || stateCode == "TX") {
//SR008-04X/I are always required in these states
attachDocument("SR008-04X");
attachDocument("SR008-04XI");
}
if (ledgerAmnt >= 500000) {
//Ledger of 500K or more requires AUTHLDG-1A
attachDocument("AUTHLDG-1A");
}
if (coInsuredCount >= 5 && orgStatusCode != "CORP") {
//Non-CORP orgs with 5 or more co-ins require AUTHCNS-1A
attachDocument("AUTHCNS-1A");
}
}
আমি সত্যিই এই নিবন্ধটি বুঝতে পারি না।
আমি উদ্ধৃতি:
প্রতিটি ব্যবসায়ের নিয়ম ধ্রুবকটি যদি কোনও কনফিগারেশন ফাইলে সংরক্ষণ করা হয় তবে সফ্টওয়্যারটি রক্ষণাবেক্ষণ করা প্রত্যেকের পক্ষে জীবন অনেক বেশি [আরও বেশি ( sic )] হয়ে পড়েছিল: অনেকগুলি কোড ফাইল যা একটি, বড় ফাইল (বা, রূপান্তর, একটি সম্পূর্ণ প্রচুর পরিমাণে কনফিগারেশন ফাইল); ব্যবসায়ের নিয়মে পরিবর্তন মোতায়েনের জন্য নতুন কোডের প্রয়োজন হয় না, তবে ম্যানুয়ালি কনফিগারেশন ফাইলগুলি পরিবর্তন করতে হবে; এবং ডিবাগিং এটি আরও অনেক কঠিন।
এটি একটি কনফিগারেশন ফাইলে "500000" ধ্রুবক পূর্ণসংখ্যা, বা "AUTHCNS-1A" এবং অন্যান্য স্ট্রিং ধ্রুবক থাকার বিরুদ্ধে একটি যুক্তি।
এটি কীভাবে খারাপ অভ্যাস হতে পারে?
এই স্নিপেটে, "500000" কোনও সংখ্যা নয়। উদাহরণস্বরূপ, এটি একই নয়:
int doubleMe(int a) { return a * 2;}
যেখানে 2, এমন একটি সংখ্যা যা বিমূর্ত হওয়া প্রয়োজন। এর ব্যবহার সুস্পষ্ট, এবং এটি এমন কোনও কিছু উপস্থাপন করে না যা পরে আবার ব্যবহার করা যেতে পারে।
বিপরীতে, "500000" কেবল একটি সংখ্যা নয়। এটি একটি তাৎপর্যপূর্ণ মান, যা কার্যকারিতার মধ্যে একটি ব্রেকপয়েন্টের ধারণার প্রতিনিধিত্ব করে। এই সংখ্যাটি একাধিক স্থানে ব্যবহার করা যেতে পারে তবে আপনি যে নম্বরটি ব্যবহার করছেন তা এটি নয়; এটি সীমা / সীমান্তরেখার ধারণা, যার নীচে একটি নিয়ম প্রযোজ্য এবং উপরেরটি অন্যটি।
এটি কীভাবে কোনও কনফিগারেশন ফাইল, বা এমনকি একটি #define
, const
বা আপনার ভাষা যা সরবরাহ করে তা এর মান যুক্ত করার চেয়ে খারাপ করে কীভাবে উল্লেখ করছে ? যদি পরে প্রোগ্রামে বা অন্য কোনও প্রোগ্রামারকেও সেই সীমান্তরেখা প্রয়োজন হয়, যাতে সফ্টওয়্যারটি অন্য একটি পছন্দ করে, আপনি ত্রুটিযুক্ত হন (কারণ যখন এটি পরিবর্তন হয়, কিছুই আপনাকে গ্যারান্টি দেয় না যে এটি উভয় ফাইলে পরিবর্তিত হবে)। এটি ডিবাগিংয়ের জন্য স্পষ্টতই খারাপ।
এছাড়াও, যদি আগামীকাল, সরকার দাবি করে "5/3/2050 থেকে, আপনাকে AUTHLDG-122B যুক্ত করতে হবে AUTHLDG-1A এর পরিবর্তে", এই স্ট্রিং ধ্রুবকটি কোনও সাধারণ স্ট্রিং ধ্রুবক নয়। এটি এমন একটি যা একটি ধারণাকে প্রতিনিধিত্ব করে; এটি কেবলমাত্র সেই ধারণার বর্তমান মান (যা "খাত যখন 500k এর উপরে হয় তবে আপনি যে জিনিসটি যুক্ত করেন এটি")।
আমাকে স্পষ্ট করতে দিন। আমি নিবন্ধটি ভুল বলে দিচ্ছি না; আমি ঠিক এটি পাই না; সম্ভবত এটি খুব ভালভাবে ব্যাখ্যা করা হয়নি (অন্তত আমার চিন্তাভাবনার জন্য)।
আমি বুঝতে পারি যে প্রতিটি সম্ভাব্য স্ট্রিংয়ের আক্ষরিক বা সংখ্যাসূচক মানকে ধ্রুবক, সংজ্ঞায়িত বা কনফিগারেশন ভেরিয়েবলের সাথে প্রতিস্থাপন করা কেবল প্রয়োজনীয় নয়, বরং জিনিসগুলিকেও জটিল করে তোলে, তবে এই বিশেষ উদাহরণটি এই শ্রেণীর অধীনে চলে আসে বলে মনে হয় না। আপনি কীভাবে জানবেন যে এর পরে আপনার প্রয়োজন হবে না? বা এই বিষয়ে অন্য কেউ?