কম্পিউটার সাইন্সে একটা বিখ্যাত joke আছে।
প্রোগ্রামিংয়ে তিনটি কঠিন সমস্যা আছে:
- ক্যাশ ইনভ্যালিডেশন,
- নামকরণ,
- আর অফ-বাই-১ এরর।
"নামকরণ" বা variable/function/class-এর জন্য ভালো নাম খোঁজা প্রোগ্রামিং দুনিয়ার অন্যতম কঠিন চ্যালেঞ্জ। আমার কাছে মনে হয় কোন সমস্যার সমাধান করতে যত সময় লাগে তার চেয়েও বেশি মেন্টাল প্রেশার ফিল হয় ভেরিয়েবল/ক্লাস/ফাংশন এসবের নাম চিন্তা করা। অনেকদিন যাবত ভাবতেছিলাম নাম করনের কোন গোল্ডেন রুল আছে কিনা।
এর উদ্দেশ্যে আমি অনেক মানুষের কোড বেইজ খেয়াল করতাম অনেকদিন যাবত, তাদের কোডিং স্টাইল খেয়াল করতাম বিশেষ করে তাঁরা কিভাবে প্রোগ্রামিং আইডেন্টিফায়ার গুলিকে নাম দিচ্ছে। সম্প্রতি লারাভেল এর কোড বেজ খেয়াল করলাম তাদের নাম করন convension বেশ সুন্দর - আমি impressed হয়েছি, লারাভেল যেভাবে নাম করন করে সেটাকে আমরা একটা golden rule হিসেবে ধরতে পারি।
সমস্যাটা কী?
কোনো একটা ক্লাস বা ফাংশনের নাম দেওয়ার সময় আমরা প্রায়ই চিন্তায় পড়ে যাই — “এটার জন্য পারফেক্ট নাম কী হতে পারে?” যেমন ধরুন আপনি একটি সার্ভিস ক্লাস বানাচ্ছেন যা ইউজারদের জন্য ইনভয়েস পাঠায়। এখন আপনি হয়তো ভাবছেন এর নাম কী হবে:
- SendInvoiceToUser
- DispatchInvoice
- UserInvoiceSender
প্রত্যেকটা নামই আংশিকভাবে সঠিক, কিন্তু পুরোপুরি ঠিক কি না, তা নিশ্চিত হতে পারি না।
সহজ সমাধান: Job বা Action ধরে ভাবুন
Laravel community যেভাবে এটি সমাধান করে তা হচ্ছে — আপনার কাজকে “একটি কাজ” হিসেবে চিন্তা করুন, যেটা আপনি "Dispatch" করছেন বা "Execute" করছেন। নিচের উদাহরণ খেয়াল করুন:
➡️ SendInvoice এখানে:
- ✅ কাজটা স্পষ্ট — ইনভয়েস পাঠানো
- ✅ নাম ছোট ও শক্তিশালী
- ✅ ভবিষ্যতে পুনঃব্যবহারযোগ্য
আরও কিছু উদাহরণ
- একটি রিপোর্ট তৈরি করা ->
GenerateReport
- ইউজারকে মেইল পাঠানো ->
SendWelcomeEmail
- কোনো এক্সপোর্ট অপারেশন ->
ExportUserData
ফোল্ডার স্ট্রাকচারও হতে পারে এমন:
app/
└── Actions/
├── SendWelcomeEmail.php
├── ExportUserData.php
└── GenerateReport.php
অথবা
app/
└── Jobs/
├── SendInvoice.php
├── CancelSubscription.php
└── RefundOrder.php