Clean Architecture Clean Architecture in bengali Software Architecture

ইউজ কেস (Use Cases): আপনার অ্যাপ্লিকেশনের আসল লজিক কন্ট্রোল | পার্ট ০৩

January 26, 2026 · khokanuzzamankhokan@gmail.com

ইউজ কেস (Use Cases): আপনার অ্যাপ্লিকেশনের আসল লজিক কন্ট্রোল | পার্ট ০৩

সফটওয়্যার ইঞ্জিনিয়ারিংয়ের এই সিরিজে আমরা ইতিপূর্বে প্রথম পর্বে আর্কিটেকচার এবং দ্বিতীয় পর্বে এনটিটি নিয়ে আলোচনা করেছি। আজ আমাদের মূল আলোচনার বিষয় হলো Clean Architecture Use Cases

ইউজ কেস আসলে কী?

সহজ কথায়, ইউজ কেস হলো আপনার অ্যাপের এক একটি সুনির্দিষ্ট কাজ (Action)। যেমন: “লগইন করা”, “প্রোফাইল আপডেট করা” বা “সার্ভার থেকে ডেটা রিট্রিভ করা”। আংকেল বব এটিকে বলেন ‘Application Business Rules’। এই লেয়ারটি এনটিটিগুলোকে ব্যবহার করে আপনার অ্যাপের মূল কাজগুলো সম্পন্ন করে।

কেন আমরা Clean Architecture Use Cases ব্যবহার করবো?

একজন সফটওয়্যার ইঞ্জিনিয়ার হিসেবে আমাদের সবচেয়ে বড় চ্যালেঞ্জ হলো “Massive Controller” এড়ানো। যখন আমরা সব লজিক কন্ট্রোলারের ভেতর লিখি, তখন কোড মেইনটেইন করা অসম্ভব হয়ে পড়ে। Clean Architecture Use Cases ব্যবহার করলে:

  1. স্মার্ট ইউআই এড়ানো যায়: ইউআই-এর কাজ শুধু ডেটা দেখানো, লজিক প্রসেস করা নয়।
  2. কোড ডুপ্লিকেশন কমে: একই লজিক একাধিক স্ক্রিনে লাগলে বারবার কোড কপি করতে হয় না।
  3. সহজ টেস্টিং: লজিক আলাদা থাকায় ইউনিট টেস্টিং করা অনেক সহজ হয়।

প্র্যাকটিক্যাল কোড ইমপ্লিমেন্টেশন

মনে করুন, আমরা ইউজারের প্রোফাইল গেট করার জন্য একটি ইউজ কেস লিখবো।

ধাপ ১: রিপোজিটরি ইন্টারফেস (Domain Layer)

abstract class UserRepository {
  Future<UserEntity> getUser(int userId);
}

ধাপ ২: ইউজ কেস তৈরি এখানে আমরা Single Responsibility Principle ফলো করবো। অর্থাৎ, একটি ইউজ কেস শুধু একটি কাজই করবে।

class GetUserUseCase {
  final UserRepository repository;

  GetUserUseCase(this.repository);

  Future<UserEntity> execute(int userId) async {
    // এখানে আপনি চাইলে অতিরিক্ত বিজনেস লজিক যোগ করতে পারেন
    return await repository.getUser(userId);
  }
}

সারকথা

প্রফেশনাল ডেভেলপার হিসেবে বড় প্রজেক্ট মেইনটেইন করার জন্য Clean Architecture Use Cases-এর কোনো বিকল্প নেই। এটি আপনার বিজনেস লজিককে UI এবং Data লেয়ার থেকে সম্পূর্ণ আলাদা রাখে।

Uncle Bob-এর অরিজিনাল ব্লগ

Share:

Leave a Reply

Your email address will not be published. Required fields are marked *