ভেরিয়েবলের নাম রাখা: শিশুর নাম রাখার চেয়েও কঠিন

আমাদের দেশে বাচ্চার নাম রাখা একটা জাতীয় অনুষ্ঠান। দাদা একটা নাম চান, নানি আরেকটা, ফুপু অর্থ খোঁজেন, মামা বলেন "আধুনিক নাম রাখো"। সপ্তাহের পর সপ্তাহ আলোচনা চলে।
অথচ প্রোগ্রামাররা প্রতিদিন শত শত নাম রাখেন, আর বেশিরভাগই দুই সেকেন্ডে: x, temp, data, data2, final_data।

কেন নাম এত গুরুত্বপূর্ণ
কোড একবার লেখা হয়, কিন্তু পড়া হয় অসংখ্যবার। রিভিউতে, ডিবাগিংয়ে, নতুন সহকর্মী এলে, ছয় মাস পর আপনি নিজে ফিরে এলে। ভালো নাম মানে কোড নিজেই নিজেকে ব্যাখ্যা করে, কমেন্ট লাগে কম।
# খারাপ
def calc(d, r):
return d - d * r / 100
# ভালো
def discount_dam(mul_dam, chhar_shotangsho):
return mul_dam - mul_dam * chhar_shotangsho / 100
দ্বিতীয়টা পড়লেই বোঝা যায় কী হচ্ছে, কোনো ব্যাখ্যা ছাড়াই।
নাম রাখার কিছু নিয়ম
১. কী রাখছে, সেটা বলুন। d না, delivery_date। lst না, pending_orders।
২. একক আর বহুবচন ঠিক রাখুন। user মানে একজন, users মানে অনেকজন। লুপে পড়তে সুবিধা হয়: for user in users।
৩. বুলিয়ানের নাম প্রশ্নের মতো। is_active, has_paid, can_edit। তাহলে if user.is_active: পড়তে প্রায় বাক্যের মতো লাগে।
৪. ফাংশনের নাম ক্রিয়া দিয়ে। get_user, send_email, calculate_tax। ফাংশন কিছু করে, তাই নামও কাজ বোঝাবে।
৫. একক (unit) নামে রাখুন। timeout না, timeout_seconds। weight না, weight_kg। অনেক বড় বড় দুর্ঘটনা হয়েছে মিটার আর ফুট গুলিয়ে।
৬. সংক্ষেপ এড়িয়ে চলুন। usr_cnt_tmp কী? কেউ জানে না। temporary_user_count লম্বা, কিন্তু স্পষ্ট।
৭. সবাই যে নিয়ম মানে, সেটা মানুন। পাইথনে snake_case, জাভাস্ক্রিপ্টে camelCase, কনস্ট্যান্ট UPPER_CASE। দলে একটা স্টাইল ঠিক করুন।
যখন ছোট নাম ঠিক আছে
ছোট লুপে i, j বা গণিতের সূত্রে x, y চলবে, কারণ এগুলোর অর্থ সবাই জানে। নিয়ম হলো: ভেরিয়েবল যত বেশি জায়গায় ব্যবহার হবে, নাম তত বেশি বর্ণনামূলক হবে।
বাংলায় নাম রাখা যায়?
পাইথনে ইউনিকোড নাম চলে, তাই দাম = 100 লিখলেও কাজ করবে। কিন্তু দলগত কাজে, আন্তর্জাতিক প্রজেক্টে বা টাইপিংয়ের সুবিধার জন্য সাধারণত ইংরেজি নামই ভালো। শেখার সময় বা নিজের ছোট স্ক্রিপ্টে মজা করে বাংলা নাম রাখতেই পারেন।
একটা পরীক্ষা
নিজের পুরনো কোড খুলুন। প্রতিটা ভেরিয়েবলের নাম দেখে প্রশ্ন করুন: শুধু নাম দেখে কি বোঝা যায় এটা কী? যদি উত্তর "না" হয়, নাম বদলান। আধুনিক এডিটরে "Rename Symbol" দিয়ে পুরো প্রজেক্টে একসাথে বদলানো যায়।
বাচ্চার নাম রাখার মতো পরিবারের মিটিং লাগবে না। শুধু দশ সেকেন্ড বেশি চিন্তা। ভবিষ্যতের যে মানুষটা আপনার কোড পড়বে, সে আপনাকে দোয়া করবে। আর সেই মানুষটা খুব সম্ভবত আপনিই।