ক্লিন কোড: আম্মার রান্নাঘরের মতো গোছানো

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

- ৩০০ লাইনের ফাংশন: এক হাঁড়িতে ডাল, ভাত, মাছ সব একসাথে রান্না।
- কপি-পেস্ট করা লজিক: একই রেসিপি পাঁচটা খাতায় লেখা, একটা বদলালে বাকিগুলো পুরনো থেকে যায়।
- ম্যাজিক নম্বর:
if total > 4999:কেন ৪৯৯৯? কেউ জানে না। - কমেন্ট করে রাখা পুরনো কোড: ফ্রিজের কোণায় তিন সপ্তাহ আগের তরকারি। "পরে লাগতে পারে।"
- অস্পষ্ট নাম: কৌটার গায়ে কিছু লেখা নেই, খুলে গন্ধ শুঁকে বুঝতে হয়।
গোছানোর নিয়ম
১. প্রতিটা ফাংশন একটা কাজ করবে।
# অগোছালো
def process_order(order):
# দাম হিসাব, ডিসকাউন্ট, ট্যাক্স, ইমেইল, ডেটাবেস... সব এখানে
...
# গোছানো
def process_order(order):
total = calculate_total(order)
total = apply_discount(total, order.coupon)
save_order(order, total)
send_confirmation(order.customer, total)
এখন ফাংশনটা পড়লেই পুরো প্রক্রিয়া বোঝা যায়, ঠিক রেসিপির ধাপের মতো।
২. ম্যাজিক নম্বরের নাম দিন।
FREE_DELIVERY_MINIMUM_TAKA = 5000
if total >= FREE_DELIVERY_MINIMUM_TAKA:
delivery_charge = 0
৩. একই জিনিস দুবার লিখবেন না। একই লজিক দুই জায়গায় দেখলে সেটাকে একটা ফাংশনে নিয়ে আসুন। (তবে তিনবার দেখার আগে তাড়াহুড়া করবেন না; ভুল জিনিস একসাথে করে ফেলার ঝুঁকি থাকে।)
৪. পুরনো কোড মুছে ফেলুন। Git আছে। দরকার হলে ইতিহাস থেকে ফিরিয়ে আনা যাবে। কমেন্ট করে রাখা কোড শুধু জায়গা নেয় আর বিভ্রান্ত করে।
৫. কাজ শেষে একটু গুছিয়ে রাখুন। একে বলে "বয় স্কাউট রুল": যেখানে কাজ করলেন, সেটাকে আগের চেয়ে একটু পরিষ্কার রেখে যান। রান্না শেষে চুলা মুছে রাখার মতো।
টেস্ট হলো আম্মার নজরদারি
আম্মা যেমন সঙ্গে সঙ্গে ধরে ফেলেন কিছু ভুল জায়গায় আছে, টেস্টও তেমন ধরে ফেলে কোড বদলানোর পর কিছু ভেঙেছে কি না। টেস্ট থাকলে নির্ভয়ে গোছানো যায়; না থাকলে প্রতিটা পরিবর্তন ঝুঁকি।
অতিরিক্ত গোছানোও সমস্যা
কেউ কেউ এত বেশি "পরিষ্কার" করতে চান যে দশ লাইনের কাজের জন্য পাঁচটা ক্লাস আর তিনটা ইন্টারফেস বানিয়ে ফেলেন। এটা হলো লবণের জন্য আলাদা আলমারি কেনার মতো। লক্ষ্য হলো সহজে বোঝা ও বদলানো, দেখানো না।
শেষ কথা
ক্লিন কোড কোনো বিলাসিতা না। এটা দলের সময় বাঁচায়, বাগ কমায়, আর নতুন সদস্যকে দ্রুত কাজ শুরু করতে দেয়। আম্মার রান্নাঘর বছরের পর বছর চলে কারণ সবাই নিয়মটা জানে আর মানে। আপনার কোডবেসও চলবে, যদি সবাই মিলে একটু যত্ন নেয়। আর হ্যাঁ, বিস্কুটের টিনে সুই-সুতা রাখার মতো রহস্যময় কিছু রাখলে অন্তত একটা কমেন্ট লিখে দেবেন।