২.২) ভ্যারিয়েবলের নামকরণের নিয়ম

আমরা ইতোমধ্যে ভ্যারিয়েবল কী এবং তা কীভাবে ইউজ করতে হয় তা দেখেছি। এটাও দেখেছি যে প্রতিটি ভ্যারিয়েবলেরই আলাদা নাম থাকে বা একই নামে একাধিক ভ্যারিয়েবল থাকে না।

তো এই নামকরণের কিছু নিয়ম ও কনভেনশন আছে যা আমরা এখন আলোচনা করবো।

কিছু নিয়ম

সংখ্যার ব্যবহার

একটা ভ্যারিয়েবল যদি হয় num = 10, তাহলে এটাকে যদি আমরা 9 দিয়ে গুণ করতে চাই তাহলে কয়েকভাবে করতে পারবো, যেমন

আমরা দেখতে পাচ্ছি এভাবে একটা ভ্যারিয়েবল এর সাথে সংখ্যা গুণ করতে হয়।

আমরা যদি খেয়াল করি তাহলে আমরা দেখতে পারবো, 9num এই গুণের কাজ করতেছে। তাই আমরা ভ্যারিয়েবল এর নাম কোনো সংখ্যা দিয়ে শুরু করতে পারবো না, কারণ ম্যাথমেটিকা তখন সেই নামকে একটা সংখ্যা আর ভ্যারিয়েবলের গুণফল হিসেবে ট্রিট করবে। একই ব্যাখ্যা num(9) এর ক্ষেত্রেও প্রযোজ্য, অর্থাৎ ভ্যারিয়েবলের নামের মধ্যে parentheses বা ফার্স্ট ব্রাকেটও থাকতে পারবে না।

তবে, সংখ্যা দিয়ে শুরু হতে না পারলেও ভ্যারিয়েবলের নামের মধ্যে বা শেষে ইচ্ছামতো সংখ্যা থাকতে পারে।

ভ্যারিয়েবলের নামের মধ্যে Symbol এর ব্যবহার

কিছু কিছু Symbol ভ্যারিয়েবল এর নামে ইউজ করা যায় না। যেমন চারটা বেসিক অপারেটর + - * / যদি আমরা ভ্যারিয়েবল এর নামের মধ্যে ইউজ করতে চাই তাহলে error দেখাবে। কারণ, একটা ভ্যারিয়েবলের নাম যদি big+var দিতে চাই তাহলে ম্যাথমেটিকা কী বুঝবে? আমরা big এবং var এর যোগফল চাচ্ছি নাকি big+var নিজেই একটা ভ্যারিয়েবল এর নাম? একই কথা - * / ^ = এর ব্যাপারেও সত্যি। এই confliction এড়ানোর জন্য, ভ্যারিয়েবল এর নামের মধ্যে আমরা এসব চিহ্ন দিব না।

ব্রাকেট এর ব্যবহার

আমরা একটু আগে দেখলাম, ভ্যারিয়েবলের নামের মধ্যে ফার্স্ট ব্রাকেট থাকা যাবে না।

আবার, ভ্যারিয়েবল এর নামের মধ্যে [ ] স্কয়ার ব্রাকেট (third bracket) দিলেও হবে না। যেমন, একটা ভ্যারিয়েবলের নাম myAge না লিখে যদি আমরা my[Age] লিখি তাহলে ম্যাথম্যাটিকা বুঝবে না যে সেটা ভ্যারিয়েবল এর নাম। সে ভাববে my নামের একটা ফাংশনে Age নামের ভ্যারিয়েবল pass করা হচ্ছে। (আপাতত ফাংশন কী তা না জানলেও চলবে, আমরা পরে এসব দেখবো।)

আমরা সামনে দেখবো যে curly brace (অর্থাৎ, second bracket {}) এর মধ্যে লিস্ট রাখা হয়, তো আমরা ভ্যারিয়েবল এর নামের মধ্যে curly braces ও দিতে পারবো না, নাহলে লিস্টের উপাদানের সাথে ভ্যারিয়েবলের নামকে গুলায়ে ফেলে ম্যাথম্যাটিকা আবারও error দিবে।

Underscore " _ " এর ব্যবহার

কখনো কখনো ভ্যারিয়েবলের নাম একাধিক শব্দ মিলে হতে পারে (সংখ্যার ব্যবহার )। তখন আমরা চাইলেও স্পেস দিয়ে ভ্যারিয়েবলের নাম লিখতে পারবো না। অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজে underscore _ দিয়ে ভ্যারিয়েবলের নামের মধ্যকার শব্দগুলোকে যুক্ত করে রাখা হয়। কিন্তু ম্যাথমেটিকা তে আমরা ভ্যারিয়েবলের নামের মধ্যে underscore _ দিতে পারবো না। একই ভাবে, ভ্যারিয়েবলের নামের মধ্যে হাইফেন - ও দেওয়া যাবে না।

যেমন: Sum_of_factors বা sum-of-factors কোনোটাই ম্যাথমেটিকায় valid variable name না।

বিবিধ

এছাড়াও, ম্যাথমেটিকার বিল্ট-ইন কোনো ফাংশন বা কী-ওয়ার্ড (যেমন: Sin, Plot, Sum, Table, If, Do, D ইত্যাদি) এবং কিছু সংরক্ষিত ধ্রুবক (যেমন: Pi, E, C ইত্যাদি) এর নামে ভ্যারিয়েবল এর নাম রাখা যাবে না। এবং অন্যান্য বিশেষ চিহ্ন যা ম্যাথম্যাটিকায় ইউজ হয় (যেমন ' " % : ; ! ? . ইত্যাদি) সেগুলাও আমরা ভ্যারিয়েবল এর নামের মধ্যে ইউজ করতে পারবো না।

কিছু convention

Convention হলো প্রচলিত কিছু নিয়মের সমষ্টি যা না মেনে কোড করলেও কোনো error দেখাবে না বা কোনো ক্ষতি হবে না, তবে Good practice এর জন্য এসব নিয়ম মেনে চলা উচিৎ।

অর্থপূর্ণ নাম নির্বাচন

ভ্যারিয়েবল এর নামকরণ এর ব্যাপারে যে জিনিসটা আমাদের খেয়াল করতে হয় সেটা হচ্ছে অর্থপূর্ণ নাম নির্বাচন। এটি কোডের readability বাড়াতে সাহায্য করে এবং কোন ভ্যারিয়েবল কী উদ্দেশ্যে তৈরী বা ব্যবহার করা হয়েছিল তা সম্পর্কে আন্দাজ পাওয়া যায়।

যেমন: আমরা যদি ২টি সংখ্যা ২টি ভ্যারিয়েবল এ রেখে তারপর এদেরকে যোগ করতে চাই তাহলে আমরা এভাবে ভ্যারিয়েবল এ মান এ্যাসাইন করেও যোগ কর‍তে পারি।

আমরা এখানে ভ্যারিয়েবল এর নাম ab দিয়েছি।

(এখানে সেমিকোলন দিয়ে আমরা মূলত আউটপুট হাইড করেছি। বিস্তারিত জানতে এখানেarrow-up-right ক্লিক করুন, তবে আপনি চাইলে এটি আপাতত স্কিপ করতে পারেন এবং আমি সেটিই সাজেস্টে করবো।)

আমরা চাইলে ভ্যারিয়েবল এর নাম hati ghora ও দিতে পারতাম। সেক্ষেত্রেও এই যোগ এর ব্যাপারটা কাজ কর‍তো, কোনো error দেখাতো না।

কিন্তু রিয়েল লাইফ প্রোগ্রাম সাধারণত অনেক বড় হয়, সেখানে অনেক ভ্যারিয়েবল থাকে এবং প্রতিটি ভ্যারিয়েবল একাধিক জায়গায় ইউজ হয়। এখন আমরা যদি ভ্যারিয়েবল এর নাম হাতি-ঘোড়া-কুকুর-বিড়াল দিয়ে রাখি তাহলে আমরা যখন সেই প্রোগ্রাম টা লিখতে যাব তখন কোন ভ্যারিয়েবল কখন কোনজায়গাতে ইউজ করতে হবে সেটা প্রায়ই ওলটপালট করে ফেলবো, অনেকসময় ভুল ভ্যারিয়েবল ভুল জায়গায় ইউজ করে ফেলতে পারি, যা কিনা আমাদের Program এর purpose কেই নষ্ট করে দিতে পারে। আবার, আমরা যখন কয়েক দিন পর আমাদের একই কোডটা আবার পড়তে নিব তখন হয়তো আমরা নিজেরাই বুঝবো না কোন কাজের জন্য কোন ভ্যারিয়েবল ডিক্লেয়ার করেছিলাম।

ভ্যারিয়েবল এর অর্থপূর্ণ নামকরণ আমাদেরকে এই সমস্যা থেকে মুক্তি দিতে পারে। আমরা যে কাজের জন্য যেই ভ্যারিয়েবলটা ইউজ করবো তার নাম যদি আমরা সেই কাজের সাথে মিল রেখে রাখি, তাহলে আমরা কোড দেখে সহজেই বুঝতে পারবো কোন ভ্যারিয়েবল কোন কাজ করতেছে।

যেমন, এখানে দুইটা সংখ্যা যোগের ক্ষেত্রে a,b বা hati, ghora ইউজ না করে number1 এবং number2 ইউজ করলে আমরা ইজিলি বুঝতে পারবো দুইটা সংখ্যা নিয়ে কোনো কাজ করা হবে এই ভ্যারিয়েবল এর মাধ্যমে।

আবার আমরা যদি দুইটা সংখ্যার ভাগফল অন্য একটা ভ্যারিয়েবল এ রাখতে চাই তাহলে কাজ টা এভাবেও করতে পারি।

কিন্তু আমরা এভাবে না করে

dividend = 10 (ভাজ্য) divisor = 2 (ভাজক) quotient = dividend / divisor (ভাগফল)

এভাবেও করতে পারি, তাহলে ভ্যারিয়েবল এর শুধু নাম দেখেই আমরা বলে দিতে পারবো এগুলা কোন কাজের জন্য ইউজ হচ্ছে।

ভ্যারিয়েবলের নাম সংক্ষেপণ

এটি কোনো syntax বিষয়ক নিয়ম না, ফলে এটা যে মানতেই হবে এমন না। তবে, ভ্যারিয়েবল এর নামের অর্থ বুঝতে যেন অসুবিধা না হয় এইদিকটা মাথায় রেখে আমরা ভ্যারিয়েবল এর নাম যতখানি সম্ভব সংক্ষেপ করার চেষ্টা করবো। যেমন, variable1 না লেখে আমরা var1 লিখতে পারি mumber1 না লিখে num1 লিখতে পারি। আবার answer, summation এগুলার পরিবর্তে ans, sum এগুলা লেখতে পারি।

একাধিক শব্দ বিশিষ্ট ভ্যারিয়েবলের নাম

নামের মধ্যে স্পেস না রাখার কারণ

আমরা এতোক্ষণ ভ্যারিয়েবল এর নামে একটাই শব্দ ব্যবহার করেছি। কিন্তু কখনো কখনো ভ্যারিয়েবল এর নাম অর্থপূর্ণ রাখার জন্য আমাদের কয়েক শব্দ বিশিষ্ট নাম রাখতে হয়।

যেমন আমরা যদি কোনো প্রবলেমে একটা ভ্যারিয়েবলে ১ থেকে ১০০ এর মধ্যে কয়টা প্রাইম নাম্বার আছে সেটার সংখ্যা রাখতে চাই তাহলে ভ্যারিয়েবলটার নাম কী দিব? যদি ভ্যারিয়েবলটার নাম শুধু number দেই তাহলে কিসের নাম্বার বুঝানো হচ্ছে তা স্পষ্ট না, আবার যদি prime দেই, তাহলেও ব্যাপারটা ঠিক ক্লিয়ার হচ্ছে না।

এখন আমরা যদি ভ্যারিয়েবল টার নাম number of primes দেই? তাহলে সহজেই বুঝতে পারতেছি যে ভ্যারিয়েবলটাতে কী রাখা হচ্ছে বা ভ্যারিয়েবলটার কাজ কী।

কিন্তু এখানে একটা সমস্যা আছে। সমস্যা টা কী তা দেখার আগে আমরা দুইটা ভ্যারিয়েবল কিভাবে গুণ করতে হয় সেটা দেখি।

ধরি দুইটা ভ্যারিয়েবল first = 3 second = 5

এখন এই দুইটা ভ্যারিয়েবল গুণ করতে চাইলে আমরা

first * second লিখতে পারি। বা, first second এভাবে লিখলেও এই দুইটা ভ্যারিয়েবল গুণ হবে।

অর্থাৎ গুণ চিহ্নর বদলে মাঝখানে স্পেস দিলেও ভ্যারিয়েবল দুইটা গুন হচ্ছে।

তাই আমরা ভ্যারিয়েবল এর নাম number of primes দিতে পারবো না, কারণ এতে করে ম্যাথম্যাটিকা ভাববে number, of, primes নামের ৩টা আলাদা আলাদা ভ্যারিয়েবল এর গুণফল বুঝানো হচ্ছে। তাই আমরা ভ্যারিয়েবল এর নামের মধ্যে স্পেস দিতে পারবো না।

স্পেসের বিকল্প

তাহলে কিভাবে একাধিক শব্দ বিশিষ্ট ভ্যারিয়েবল এর নাম দিব? অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজ এ underscore( _ ) চিহ্ন দিয়ে ভ্যারিয়েবল এর নাম লেখা হয়, যেমন number_of_primes কিন্তু ম্যাথম্যাটিকায় সেটা সম্ভব না কারণ আমরা সামনে দেখবো যে ফাংশনের প্যারামিটার এর নাম লেখার সময় আমাদের আন্ডারস্কোর দিতে হয়।তাই ভ্যারিয়েবল এর নামের মধ্যেও underscore দিলে আবারো confliction তৈরি হবে। তাই আমাদেরকে কোনো স্পেস/আন্ডারস্কোর ছাড়াই ভ্যারিয়েবল এর নামে থাকা শব্দ গুলাকে পাশাপাশি লিখতে হবে।

যেমন numberofprimes কিন্তু এভাবে লিখলে তা পড়তে একটু কষ্ট হয়, তাই আমরা যদি প্রতিটা শব্দের প্রথম অক্ষরটা শুধু বড় হাতের করে দিই: NumberOfPrimes তাহলে কিন্তু আমরা চট করেই নামটা পড়তে পারবো। এরকম কোনো phrase এর প্রতিটা শব্দের প্রথম বর্ণকে uppercase letter এ, এবং বাকিসব বর্ণকে lowercase letter এ লেখার কনভেনশন বা স্টাইলকে বলে Pascal Case

আরেকটা জনপ্রিয় উপায় আছে, সেটাও ঠিক Pascal Case এর মতোই, তবে ওখানে একদম শুরুর বর্ণ টাও সবসময় ছোট হাতের হয়। অর্থাৎ, numberOfPrimes এরকম। এটাকে বলে camel Case

এরকম আরও কিছু ভ্যারিয়েবলের নামের উদাহরণ হতে পারে,

numOfStudents nameOfAuthor radiusOfCircle distanceBetweenTwoPoints

তবে আমরা চাইবো যেন আমাদের ভ্যারিয়েবল এর নাম বেশি দীর্ঘ না হয়, এতে করে আমাদের typing effort অনেক কম হবে।

Last updated