সব ম্যাজিক সংখ্যা কি একই রকম তৈরি হয়েছে?


77

সাম্প্রতিক প্রকল্পে, আমার বাইট থেকে কিলোবাইট কিবিবাইটে রূপান্তর করা দরকার । কোডটি যথেষ্ট সোজা ছিল:

var kBval = byteVal / 1024;

এটি লেখার পরে, আমি বাকি ফাংশনটি পেয়েছি এবং এগিয়ে চলেছি।

তবে পরে, আমি ভাবতে শুরু করি যে আমি আমার কোডের মধ্যে একটি জাদু নম্বর সবেমাত্র এম্বেড করেছি কিনা ? আমার অংশ বলেছে যে এটি ঠিক ছিল কারণ সংখ্যাটি একটি স্থির নিয়মিত এবং সহজেই বোঝা উচিত। তবে আমার আরেকটি অংশ মনে করে যে এটি একটি সংজ্ঞায়িত ধ্রুবক মতো মোড়ানো থাকলে খুব পরিষ্কার হত BYTES_PER_KBYTE

সুতরাং যে নাম্বারগুলি সুপরিচিত ধ্রুবকগুলি সত্যিই সমস্ত magন্দ্রজালিক বা না?


সম্পর্কিত প্রশ্নাবলী:

নম্বরটি কখন যাদুর সংখ্যা? এবং কোডের প্রতিটি সংখ্যা একটি "যাদু নম্বর" হিসাবে বিবেচিত হয়? - অনুরূপ, তবে আমি যা বলছি তার চেয়ে অনেক বিস্তৃত প্রশ্ন। আমার প্রশ্নটি সুপরিচিত ধ্রুবক সংখ্যার উপরে কেন্দ্রীভূত যা এই প্রশ্নগুলিতে সম্বোধন করা হয়নি।

ম্যাজিক নাম্বার দূর করা: "না" বলার সময় কখন? এটি সম্পর্কিতও, তবে ধ্রুবক সংখ্যাটি ম্যাজিক নম্বর কিনা তার বিপরীতে রিফ্যাক্টরিংয়ের দিকে দৃষ্টি নিবদ্ধ করে।


17
আমি আসলে এমন একটি প্রকল্পে কাজ করেছি যেখানে তারা যেমন ধ্রুবক তৈরি করেছিল FOUR_HUNDRED_FOUR = 404। আমি অন্য একটি প্রকল্পে কাজ করেছি যেখানে তারা আক্ষরিক পরিবর্তে ধ্রুব স্ট্রিং ব্যবহার সম্পর্কে জঙ্গি ছিল, তাই তাদের কোডের মতো কয়েক ডজন লাইন ছিল যা দেখতে পাওয়া যায়DATABASE = "database"
রব

82
অবশ্যই ব্যবহার করুন 1024, কারণ অন্যথায় আপনার ডেভ টিম এটি "কিলোবাইট" বা "কিবিবাইট" বলে বিতর্ক করার সমস্ত সময় ব্যয় করবে।
স্টিভেন বার্নাপ 20

6
আপনি বিবেচনা করতে পারেন যে 1024 কিবি এবং #define KIBI1024 MEBIহিসাবে 1024 * 1024…
ysdx

6
@ রব ওয়াই: ভাল পুরানো ফোর্টরান প্রোগ্রামারগুলির মতো শোনাচ্ছে। কারণ সেই প্রোগ্রামিং ল্যাঙ্গুয়েজ প্রোগ্রামারদের তা করতে বাধ্য করেছিল । হ্যাঁ, আপনি সেখানে ধ্রুবকগুলি দেখতে পাবেন ZERO=0, ONE=1, TWO=2এবং যখন প্রোগ্রামগুলি অন্য ভাষাগুলিতে পোর্ট করা হয় (বা প্রোগ্রামাররা তাদের ভাষা স্যুইচ করার সময় আচরণ পরিবর্তন করে না) আপনিও এটি দেখতে পাবেন এবং আপনাকে প্রার্থনা করতে হবে যেন কেউ কখনও এটিকে পরিবর্তন না করে ONE=2
হোলার

4
@ নোকটিসস্কিটওয়ার আমার টিম বিট শিফটিং অপারেটরদের পরিবর্তে স্পষ্ট বিভাজন বিবরণী ব্যবহার করতে পছন্দ করে কারণ আমরা যে বহু ভাষা ব্যবহার করি এবং সেই ভাষাগুলিতে সম্ভাব্য অসামঞ্জস্য বাস্তবায়ন হয়। তেমনি, নেতিবাচক মানগুলি বিটওয়াইজ শিফটিংয়ের সাথে বেমানানভাবে পরিচালনা করা হয়। যদিও আমাদের অগত্যা নেতিবাচক বাইট মান নাও থাকতে পারে, আমরা অবশ্যই রূপান্তরিত করে এমন অন্যান্য পরিমাপের সাথে আমাদের অবশ্যই নেতিবাচক মান রয়েছে।

উত্তর:


103

সমস্ত ম্যাজিক সংখ্যা এক নয়।

আমি মনে করি যে এই পরিস্থিতিতে, যে ধ্রুবক ঠিক আছে। ম্যাজিক সংখ্যার সমস্যাটি যখন তারা যাদু হয়, অর্থাত্ তাদের উত্সটি কী তা নির্ধারণ করা যায় না, মানটি এটি কী হয় বা মানটি সঠিক বা না হয়।

BYTES_PER_KBYTE এর পিছনে 1024 লুকিয়ে রাখার অর্থ হ'ল এটি সঠিক কিনা তা আপনি তাত্ক্ষণিকভাবে দেখতে পাবেন না।

মানটি 1024 কেন হ'ল আমি তাৎক্ষণিকভাবে কেউ জানতে চাইব the অন্যদিকে, আপনি যদি বাইটগুলি মেগাবাইটে রূপান্তর করতে থাকেন তবে আমি ধ্রুবক BYTES_PER_MBYTE বা অনুরূপ সংজ্ঞায়িত করবো কারণ ধ্রুবক 1,048,576 এতটা স্পষ্ট নয় যে এটি 1024 ^ 2, বা এটা এমনকি সঠিক।

প্রয়োজনীয়তা বা মান দ্বারা নির্ধারিত মানগুলির জন্য একই হয়, যা কেবলমাত্র এক জায়গায় ব্যবহৃত হয়। আমি অন্য যে কোনও জায়গায় এটি সংজ্ঞায়িত করা এবং উভয় অংশকে নীচে অনুসরণ করে অনুসরণ করার চেয়ে প্রাসঙ্গিক উত্সটিতে মন্তব্য করার সাথে ধ্রুবকটিকে ঠিক জায়গায় রেখেছি, যেমন:

// Value must be less than 3.5 volts according to spec blah.
SomeTest = DataSample < 3.50

আমি এর চেয়েও ভাল পাই

SomeTest = DataSample < SOME_THRESHOLD_VALUE

SOME_THRESHOLD_VALUEআমার মতে কেবলমাত্র যখন একাধিক স্থানে ব্যবহৃত হয় তখন ট্রেড অফটি একটি ধ্রুবককে সংজ্ঞায়িত করতে উপযুক্ত হয়।


67
"ম্যাজিক সংখ্যার সাথে সমস্যাটি যখন তারা যাদু হয়" - এটি এই ধারণার এমন একটি উজ্জ্বল ব্যাখ্যা! আমি অকপট! একা এই বাক্যটির জন্য +1।
জার্গ ডব্লু মিত্তাগ

20
এখানে একটি আমি সবেমাত্র এলাম: "সমস্যাটি এটি সংখ্যা নয়, এটি যাদু।"
জার্গ ডব্লু মিটাগ

10
1024 কার কাছে সুস্পষ্ট? প্রতিটি ম্যাজিক সংখ্যার কি তা ন্যায়সঙ্গত নয়? সমস্ত ম্যাজিক নম্বর ব্যবহার করা হয়েছে কারণ যে কেউ এগুলি লিখেছিল তার কাছে তারা স্পষ্ট। 9.8 এছাড়াও সুস্পষ্ট না? আমার জন্য এটি পৃথিবীতে মহাকর্ষের ত্বরণটি অত্যন্ত স্পষ্ট, তবে তবুও আমি একটি ধ্রুবক তৈরি করব, কারণ আমার কাছে যা স্পষ্ট তা অন্য কারও পক্ষে সুস্পষ্ট নাও হতে পারে।
তুলাইনস কর্ডোভা

15
না। আপনার "আরও ভাল" উদাহরণের মতো একটি মন্তব্য একটি বিশাল লাল পতাকা। এটি এমন কোড যা সেই সময়ে এটি লেখার ব্যক্তির পাঠযোগ্যতার পরীক্ষায়ও পাস করে না। আমি একটি উদাহরণ দেব। e^i*pi = -1এর চেয়ে অনেক বেশি স্পষ্ট (ভাল) 2.718^i*3.142 = -1। ভেরিয়েবলগুলি গুরুত্বপূর্ণ এবং তারা কেবল সাধারণ কোডের জন্য নয়। কোডটি প্রথম পড়ার জন্য লেখা হয়, দ্বিতীয়টি সংকলন করে। এছাড়াও, চশমা পরিবর্তন হয় (অনেক)। 1024 সম্ভবত কনফিগার করা উচিত নয় 3.5 টি শব্দের মতো হওয়া উচিত।
নাথান কুপার

51
আমি 1024 ^ 2 এর জন্য একটি ধ্রুবক ব্যবহার করব না; 1024*1024Plz!
18:01

44

ম্যাজিক সংখ্যার ক্ষেত্রে আমি দুটি প্রশ্ন জিজ্ঞাসা করি।

নাম্বারটির কি কোনও নাম আছে?

নামগুলি দরকারী কারণ আমরা নামটি পড়তে পারি এবং এর পিছনের সংখ্যার উদ্দেশ্য বুঝতে পারি। নামকরণ ধ্রুবক পারে পাঠযোগ্যতা বৃদ্ধি তাহলে নাম সংখ্যা তা পরিবর্ত চেয়ে বুঝতে সহজ হয় এবং ধ্রুবক নাম সংক্ষিপ্ত হয়।

স্পষ্টতই, পাই, ই, এট ইত্যাদি ধ্রুবকগুলি। অর্থপূর্ণ নাম আছে। 1024 এর মতো একটি মান হতে পারে BYTES_PER_KBতবে আমি এটিও প্রত্যাশা করব যে কোনও বিকাশকারী 1024 এর অর্থ কী তা জানতে পারে। উত্স কোডের জন্য উদ্দেশ্যে করা শ্রোতা হলেন পেশাদার প্রোগ্রামাররা যাদের দু'জনের বিভিন্ন ক্ষমতা এবং কেন ব্যবহার করা হয় তা জানার পটভূমি থাকা উচিত।

এটি একাধিক স্থানে ব্যবহৃত হয়?

নামগুলি ধ্রুবকের একটি শক্তি, অন্যটি পুনরায় ব্যবহারযোগ্য। যদি কোনও মান পরিবর্তিত হওয়ার সম্ভাবনা থাকে তবে একাধিক স্থানে এটি শিকারের প্রয়োজনের পরিবর্তে এটি এক জায়গায় পরিবর্তন করা যেতে পারে।

তোমার প্রশ্ন

আপনার প্রশ্নের ক্ষেত্রে, আমি হিসাবে নম্বরটি ব্যবহার করব।

নাম: এই সংখ্যার জন্য একটি নাম রয়েছে, তবে এটি আসলে কার্যকর কিছু নয়। এটি কোনও প্রয়োজনীয়তার নথিতে নির্দিষ্ট করা গাণিতিক ধ্রুবক বা মান উপস্থাপন করে না।

অবস্থানগুলি: একাধিক স্থানে ব্যবহৃত হলেও, এই সুবিধাটি উপেক্ষা করে এটি কখনও পরিবর্তন হবে না।


1
ম্যাজিক সংখ্যার পরিবর্তে ধ্রুবক ব্যবহার করার কারণটি কেবল কারণ সংখ্যাটি পরিবর্তিত হবে না, এটি পাঠযোগ্যতা এবং স্ব-ডকুমেন্টেশনের জন্যও।
তুলিনাস কর্ডোভা

4
@ ব্যবহারকারী 61852: নামযুক্ত ধ্রুবকগুলি সবসময় বেশি পঠনযোগ্য হয় না। তারা প্রায়শই হয়, তবে সর্বদা হয় না।
হোয়াইটনেম

2
ব্যক্তিগতভাবে, আমি পরিবর্তে এই দুটি প্রশ্ন ব্যবহার করি: "প্রোগ্রামের জীবদ্দশায় এই মানটি কি কখনও পরিবর্তিত হবে?" এবং "এই সফটওয়্যারটিতে আমি যে বিকাশকারীদের কাজ করার আশা করছি তা কি এই নম্বরটি কী তা বুঝতে পারবেন?"
স্টিভেন বার্নাপ 20

4
আপনি Y2K সমস্যা বোঝাতে চান? আমি নিশ্চিত না যে এটি এখানে প্রাসঙ্গিক। হ্যাঁ, 'তারিখ - 1900' এর মতো প্রচুর কোড ছিল তবে সেই কোডটিতে সমস্যাটি "1900" এর যাদু নম্বর ছিল না।
স্টিভেন বার্নাপ

1
এই উত্তরটি উল্লেখ করে উপকৃত হতে পারে, কিছু "সুস্পষ্ট" সংখ্যা, 1024 অবশ্যই একটি হ'ল এমন যে অন্য বিকাশকারীরা স্বতঃস্ফূর্তভাবে এগুলি সংখ্যা হিসাবে লিখতে পারে, এমনকি যখন কেউ তাদের জন্য একটি নাম ধ্রুবক সংজ্ঞায়িত করে। আমি সম্ভবত একটির জন্য 1024 এর জন্য বিদ্যমান ধ্রুবকটির জন্য উত্স কোড অনুসন্ধান করার কথা চিন্তাও করব না যদি আমি ইতিমধ্যে না জানতাম তবে একটি আছে, যদি আমার বাইট পরিমাণ রূপান্তরতে 1024 ব্যবহার করার প্রয়োজন হয়।
হাইড

27

এই উদ্ধৃতি

সমস্যাটি সংখ্যাটি নয়, এটি যাদু।

জার্গ ডব্লিউ মিট্টাগের বক্তব্য অনুসারে এই প্রশ্নের উত্তরটি বেশ ভালভাবে দিয়েছে।

কিছু সংখ্যা নির্দিষ্ট প্রসঙ্গে কেবল যাদুকরী নয়। প্রশ্নে প্রদত্ত উদাহরণে, পরিমাপের ইউনিটগুলি পরিবর্তনশীল নামগুলি দ্বারা নির্দিষ্ট করা হয়েছিল এবং যে ক্রিয়াকলাপটি চলছে তা বেশ স্পষ্ট ছিল।

তাই 1024যাদুকরী নয় কারণ প্রসঙ্গটি এটি খুব স্পষ্ট করে দেয় যে রূপান্তরগুলির জন্য এটি উপযুক্ত, ধ্রুবক মান।

তেমনি, এর একটি উদাহরণ:

var numDays = numHours / 24; 

সমানভাবে স্পষ্ট এবং যাদুকরী নয় কারণ এটি সুপরিচিত যে দিনে 24 ঘন্টা থাকে।


21
তবে ... তবে ... 24 পরিবর্তন করতে পারে! পৃথিবী তার আবর্তনকে কমিয়ে দিচ্ছে এবং শেষ পর্যন্ত 25 ঘন্টা থাকবে! (অবশ্যই আমরা সকলেই

14
আপনার সফ্টওয়্যারটি মঙ্গল গ্রহে স্থাপন করার পরে কী ঘটে ? আপনার সেই ধ্রুবকটি ইনজেকশন করা উচিত ...
durron597

8
@ durron597: যদি আপনার প্রোগ্রামটি পৃথিবীতে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে চালিত হয় । আপনি একটি ধ্রুবক, বরং এমন একটি ফাংশন ইনজেকশন করা উচিত নয় যা একটি টাইমস্ট্যাম্প গ্রহণ করে (এখনই ডিফল্ট) এবং টাইমস্ট্যাম্প পড়ার দিনে কত ঘন্টার সংখ্যা
স্টিভ জেসপ

13
ইয়া জিএনআই শিখতে হবে।
কিয়াসনাম

3
@ durron597 আপনার টাইমকিপিং সফ্টওয়্যারটি যখন মঙ্গল গ্রহে স্থাপন করা হয় তখন কিছুই বিশেষ হয় না কারণ কনভেনশন অনুসারে মঙ্গলের দিনগুলি 24 ঘন্টা দীর্ঘ হয় তবে প্রতিটি ঘন্টা পৃথিবীর চেয়ে 2.7% দীর্ঘ হয় । অবশ্যই, কোনও পৃথিবী সমুদ্রের দিন বা পৃথিবী সৌর দিন ঠিক 24 ঘন্টা নয় (সঠিক সংখ্যা একই পৃষ্ঠায় রয়েছে), সুতরাং আপনি 24 যেভাবেই ব্যবহার করতে পারবেন না ! ইজকাটা যেমন উল্লেখ করেছে, তেমন লিপ সেকেন্ডেও আঘাত লাগে। 24পৃথিবীর চেয়ে মঙ্গল গ্রহের ধ্রুবকটি ব্যবহার করে আপনার ভাগ্য ভাল হতে পারে !
একটি সিভিএন

16

অন্যান্য পোস্টারগুলি উল্লেখ করেছে যে রূপান্তরটি ঘটছে তা 'সুস্পষ্ট', তবে আমি একমত নই। এই মুহুর্তে মূল প্রশ্নটি অন্তর্ভুক্ত:

কিলোবাইট কিবিবাইটস

তাই ইতিমধ্যে আমি জানি লেখক বিভ্রান্ত ছিলেন বা ছিলেন। উইকিপিডিয়া পৃষ্ঠাটি বিভ্রান্তিকে আরও বাড়িয়ে তোলে:

1000 = KB kilobyte (metric)
1024 = kB kilobyte (JEDEC)
1024 = KiB kibibyte (IEC)

সুতরাং "কিলোবাইট" কে 1000 এবং 1024 উভয় ফ্যাক্টর বোঝাতে ব্যবহৃত হতে পারে, শর্টহ্যান্ডের মধ্যে কেবলমাত্র 'কে' এর মূলধন হ'ল। তার উপরে, 1024 অর্থ কিলোবাইট (জেইডইসি) বা কিবিবাইট (আইইসি) হতে পারে। অর্থহীন নাম নিয়ে ধ্রুবকভাবে কেন সমস্ত বিভ্রান্তি ছিন্নবিচ্ছিন্ন করে না? বিটিডাব্লু, এই থ্রেডটি "BYTES_PER_KBYTE" প্রায়শই ব্যবহার করেছে এবং এটি কোনও কম দ্বিধাও নয়। কেবিওয়াইটিই: এটি কিবিবিটাই বা কিলোবাইট? আমি JEDEC উপেক্ষা এবং জানাতে চান, তাহলে BYTES_PER_KILOBYTE = 1000BYTES_PER_KIBIBYTE = 1024। আর কোনও বিভ্রান্তি নেই।

আমার মতো লোকেরা এবং আরও অনেক লোকের কারণেই 'জঙ্গিবাদী' (এখানে একজন মন্তব্যকারীকে উদ্ধৃত করার জন্য) যাদু সংখ্যার নামকরণের বিষয়ে মতামতগুলি আপনি কী করতে চান তা নথিভুক্ত করা এবং অস্পষ্টতা অপসারণ সম্পর্কে। এবং আপনি আসলে একটি ইউনিট বাছাই করেছেন যা প্রচুর বিভ্রান্তির দিকে পরিচালিত করেছে।

যদি আমি দেখি:

int BYTES_PER_KIBIBYTE = 1024;  
...  
var kibibytes = bytes / BYTES_PER_KIBIBYTE;  

তারপরে এটি তাত্ক্ষণিকভাবে স্পষ্ট যে লেখকটি কী করতে চেয়েছিলেন, এবং কোনও দ্বিপাক্ষিকতা নেই। আমি কয়েক সেকেন্ডের মধ্যে ধ্রুবকটি পরীক্ষা করতে পারি (এটি অন্য কোনও ফাইলে থাকলেও), সুতরাং এটি 'তাত্ক্ষণিক' না হলেও তাত্ক্ষণিকভাবে যথেষ্ট।

শেষ পর্যন্ত, আপনি এটি লেখার সময় এটি স্পষ্টরূপে প্রকাশিত হতে পারে তবে পরে আপনি যখন এটির কাছে ফিরে আসবেন তখন তা কম স্পষ্ট হবে এবং অন্য কেউ এটি সম্পাদনা করলে এটি আরও কম স্পষ্ট হতে পারে। একটি ধ্রুবক তৈরি করতে 10 সেকেন্ড সময় লাগে; ইউনিটগুলির সাথে ইস্যুটি ডিবাগ করতে আধা ঘন্টা বা তার বেশি সময় লাগতে পারে (কোডটি আপনার দিকে ঝাঁপিয়ে পড়বে না এবং ইউনিটগুলি ভুল বলে দেবে, এটি বের করার জন্য আপনাকে নিজেই গণিতটি করতে হবে, এবং আপনি ইউনিটগুলি পরীক্ষা করার আগে সম্ভবত 10 টি বিভিন্ন উপায় অনুসন্ধান করবেন)।


2
ভাল পাল্টা উত্তর। আপনি স্বতন্ত্র দল সংস্কৃতি বিবেচনা করলে এটি আরও শক্তিশালী হবে। আপনি যদি আমার এসই প্রোফাইলকে বিশ্বাস করেন তবে আমি সেই নির্দিষ্ট মানগুলির পূর্বাভাস দেওয়ার পক্ষে যথেষ্ট বয়স্ক। সুতরাং "বর্তমান (নন-) স্ট্যান্ডার্ড শব্দটি কী" থেকে একমাত্র বিভ্রান্তি আসে? এবং আপনি সম্ভবত ধরে নিয়েই নিরাপদে থাকবেন যে আমি সহযোদ্ধা ডাইনোসরদের একটি দলের সাথে কাজ করছি যাদের সবার একই পরিভাষা (অ-) সমস্যা রয়েছে।

@ গ্লেনএইচ:: আইএমএইচও, দুই-ভিত্তিক পাওয়ার ইউনিট সংরক্ষণের জন্য রাখা উচিত ছিল, যেহেতু এটি দুটি-আকারের ক্ষুদ্র অংশে বরাদ্দ করা হয়েছে। এটি ন্যূনতম বরাদ্দের আকার 4096 বাইট, 256 ন্যূনতম-আকারের ফাইলগুলি ধারণ করার জন্য প্রয়োজনীয় স্টোরেজের পরিমাণের জন্য এমন একক বা 244.140625 ফাইল সংরক্ষণের জন্য প্রয়োজনীয় স্টোরেজের পরিমাণ কী তা বোঝা যায়? ব্যক্তিগতভাবে, আমি হার্ড-ড্রাইভ-নির্মাতা মেগাবাইট এবং অন্যান্য মেগাবাইটের মধ্যে পার্থক্যটি টেলিভিশন সেট তির্যক ইঞ্চি এবং বাস্তব তির্যক ইঞ্চির মধ্যে পার্থক্য হিসাবে দেখি।
সুপারক্যাট

@ রায়ান: এই নির্দিষ্ট ক্ষেত্রে, আমি বরং স্ট্যান্ডার্ড ইউনিট গ্রহণের বিষয়ে জঙ্গি হব - কেবি 1000 বাইট বা কোডটি ভুল, এবং 1024 বাইট হ'ল কিবি বা কোডটি ভুল। এটিই একমাত্র উপায় যা আমরা কখনই "ইউনিটগুলি দ্ব্যর্থহীন" সমস্যাটি কাটিয়ে উঠি। "ম্যাজিক কনস্ট্যান্টস" (পছন্দ করা KB) আলাদাভাবে সংজ্ঞায়িত করা বিভিন্ন ব্যক্তি সহায়তা করবে না।
ব্রেন্ডন

11

একটি সংখ্যাসূচক মানের উল্লেখ হিসাবে একটি নাম নির্ধারণ করা পরামর্শ দেয় যে যখনই সেই নামটি ব্যবহার করে এমন এক জায়গায় আলাদা মানের প্রয়োজন হয়, সম্ভবত এটি সমস্ত ক্ষেত্রেই প্রয়োজন হবে। এটি নামের দিকেও নির্ধারিত সংখ্যাসূচক মান পরিবর্তন করা মান পরিবর্তন করার একটি বৈধ উপায় suggest যখন সত্য হয়, এবং যখন এটি মিথ্যা হয় তখন এ জাতীয় নিহিত ব্যবহার কার্যকর হতে পারে।

দুটি পৃথক স্থানে একটি নির্দিষ্ট আক্ষরিক মান ব্যবহার করা (উদাহরণস্বরূপ 1024) দুর্বলভাবে পরামর্শ দেয় যে কোনও পরিবর্তনকারী প্রোগ্রামারকে পরিবর্তিত করতে প্ররোচিত করবে এমন পরিবর্তনগুলি প্রোগ্রামারকে অন্যকে পরিবর্তন করতে অনুপ্রাণিত করতে পারে, তবে এই প্রভাবটি প্রয়োগ হওয়ার চেয়ে অনেক দুর্বল is প্রোগ্রামার যদি এমন ধ্রুবককে একটি নাম বরাদ্দ করে।

এর মতো কিছু নিয়ে একটি বড় বিপদ #define BYTES_PER_KBYTE 1024হ'ল এটি এমন কাউকে পরামর্শ দিতে পারে printf("File size is %1.1fkB",size*(1.0/BYTES_PER_KBYTE));যে মুখোমুখি হয় যে কোডটি হাজার হাজার বাইট ব্যবহারের নিরাপদ উপায়টি হ'ল #defineবিবৃতি পরিবর্তন করা । তবে এই জাতীয় পরিবর্তন বিপর্যয়কর হতে পারে, যেমন, যদি অন্য কিছু সম্পর্কিত সম্পর্কযুক্ত কোড কেবিটেসে কোনও বস্তুর আকার পায় এবং এর জন্য একটি বাফার বরাদ্দ করার সময় সেই ধ্রুবকটি ব্যবহার করে।

এটা ব্যবহার করা যুক্তিযুক্ত হতে পারে #define BYTES_PER_KBYTE_FOR_USAGE_REPORT 1024এবং #define BYTES_PER_KBYTE_REPORTED_BY_FNOBULATOR 1024, ধ্রুব 1024 দ্বারা পরিবেশিত যে বিভিন্ন উদ্দেশ্যে একটি আলাদা নাম বরাদ্দ, কিন্তু যে অনেক শনাক্তকারী স্থাপিত হবে সংজ্ঞায়িত করা হয় এবং ঠিক একবার ব্যবহার করা হচ্ছে। তদুপরি, অনেক ক্ষেত্রে, কোডটি কোথায় ব্যবহার করা হয়েছে তা যদি দেখেন তবে মানটির অর্থ কী তা বোঝা সহজ এবং কোডটি কোনটির মধ্যে ব্যবহৃত কোন স্থির মান দেখে যদি তার অর্থ হয় তা নির্ধারণ করা সবচেয়ে সহজ। যদি একটি সংখ্যাসূচক আক্ষরিক শুধুমাত্র একবার নির্দিষ্ট উদ্দেশ্যে ব্যবহার করা হয় তবে যেখানে এটি ব্যবহৃত হয় সেখানে আক্ষরিক লেখার ক্ষেত্রে এটিতে কোনও লেবেল নির্ধারণ করা এবং এর মান অন্য কোথাও ব্যবহার করার চেয়ে প্রায়শই বোঝার কোড পাওয়া যায়।


7

আমি কেবল সংখ্যাটি ব্যবহারের দিকে ঝুঁকবো, তবে আমি মনে করি যে একটি গুরুত্বপূর্ণ বিষয় সামনে আনা হয়নি: একই সংখ্যার অর্থ বিভিন্ন প্রসঙ্গে বিভিন্ন জিনিস হতে পারে এবং এটি পুনরায় সংশোধনকে জটিল করে তুলতে পারে।

1024 মাইবি প্রতি কিবি সংখ্যাও of ধরুন আমরা সেই গণনাটি কোথাও বা একাধিক জায়গায় প্রতিনিধিত্ব করতে 1024 ব্যবহার করি এবং এর পরিবর্তে এখন আমাদের জিআইবি গণনা করার জন্য এটিতে পরিবর্তন করতে হবে। ধীরে ধীরে পরিবর্তন করা বৈশ্বিক সন্ধান / প্রতিস্থাপনের চেয়ে সহজ যেখানে আপনি দুর্ঘটনাক্রমে কিছু জায়গায় ভুলটিকে পরিবর্তন করতে পারেন বা অন্যকে এটি মিস করতে পারেন।

অথবা এটি এমনকি অলস প্রোগ্রামার দ্বারা প্রবর্তিত কিছুটা মাস্কও হতে পারে যা একদিন আপডেট করা দরকার।

এটি একটি স্বল্পতর উদাহরণস্বরূপ, তবে কিছু কোড বেসগুলিতে নতুন প্রয়োজনীয়তার জন্য পুনরায় সরবরাহ বা আপডেট করার সময় এটি সমস্যার কারণ হতে পারে। যদিও এই বিশেষ ক্ষেত্রে, আমি প্লেইন সংখ্যাটিকে সত্যই খারাপ রূপ হিসাবে বিবেচনা করব না বিশেষত আপনি যদি পুনরায় ব্যবহারের জন্য কোনও পদ্ধতিতে গণনাটি বন্ধ করতে পারেন তবে আমি সম্ভবত এটি নিজেই করব তবে ধ্রুবকটিকে আরও 'সঠিক' বিবেচনা করব।

আপনি যদি নামযুক্ত ধ্রুবক ব্যবহার করেন তবে, সুপারক্যাট হিসাবে বলা হয়েছে যে প্রসঙ্গটিও গুরুত্বপূর্ণ কিনা তা বিবেচনা করা গুরুত্বপূর্ণ, এবং যদি আপনার একাধিক নামের প্রয়োজন হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.