somewhere in... blog
x
ফোনেটিক ইউনিজয় বিজয়

ভালো প্রোগ্রামার হতে হলে সফটওয়্যার ডিজাইন প্যাটার্ন সম্পর্কে অন্তত বেসিক জ্ঞান থাকলেও থাকা জরুরী

০৬ ই জুলাই, ২০১৫ রাত ১:৫১
এই পোস্টটি শেয়ার করতে চাইলে :

শুধু কিছু if … else conditional statement দিয়ে লাইনের পর লাইন কোড লিখতে পারার মানে এই নয় যে। আপনি ভাল প্রোগ্রামার। ভাল প্রোগামার হতে হলে কোড কোয়ালিটি মেইনটেইন করাও অনেক গুরুত্বপূর্ণ বিষয়। ভাল ডিজাইন প্যাটার্নে করা প্রোগ্রামিং কোডের কোয়ালিটিই আলাদা।

.Wikipedia এর মতে “In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design”

.ভাল Design Pattern-এর অন্যতম বৈশিষ্ট্য, এটি হবে language independent. অর্থাৎ আপনি কোন Pattern Design করলেন তবে আপনি PHP প্রোগ্রামার হন, বা C++ বা C# বা Java যে ল্যাঙ্গুয়েজেই কোড লিখেন না কেন। কিছু ক্ষেত্র বাদে আপনার ডিজাইন করা প্যাটার্ন সবার সাথেই ইমপ্লিমেন্ট করা যাবে।

.সহজ ভাষায়, Software Design Pattern হল আপনার প্রোগ্রামিং এর সমস্যার reusable অংশ গুলো চিহ্নিত করে ছোট ছোট ব্লকে ভাগ করে নেয়া, যখন যেটা প্রয়োজন তখন সেটা ব্যবহার করা।

.আপনি প্রতিদিন ঘুমান, রান্না-বান্না করেন, খাওয়া-দাওয়া করেন আর টয়লেট করেন। এটা আপনার প্রতিদিনের reusable কাজ।

.এখন আপনি যদি আপনার বাড়িকে সুবিশাল একটা হল রুম বানিয়ে সেখানেই থাকা শুরু করেন, মানে এক রুমেই রান্না-বান্না করেন, এক রুমেই ঘুমান, খাওয়া-দাওয়াও সেই রুমেই ... আবার টয়লেটও সেখানেই করেন। তাহলে কোন সমস্যা নেই।

.অথবা যদি বাড়িটা ছোট ছোট ব্লকে ভাগ করে নেন। মানে এক ব্লক আপনার কিচেন, এক ব্লক আপনার বেড রুম। অন্য একটা ব্লকে ডাইনি। আর একটা ব্লক বাথরুম বা টয়লেট। তাহলে সেটা ভাল হবে না প্রথমটা?

.আমি যদি আপনাকে নির্দেশ দেই, যাও ভাত রান্না কর। তবে বড় হল রুমের ক্ষেত্রে কি হবে? আপনি পুরো রুম জুড়ে আতিপাতি করে খুঁজবেন চুলা কই, রান্নার হাড়িটা বা কই, চাল কোথায় রাখা আছে? চামচ রাখা কোথায়? পানি কই পাব ইত্যাদি ইত্যাদি।

.আর যদি দ্বিতীয় ক্ষেত্রে একই নির্দেশ দেই। তবে আপনি সোজা রান্না ঘরে চলে যাবেন। কারণ আপনি জানেন ভাত রান্নার প্রয়োজনীয় সব উপকরণ আপনি সেখানেই সাজানো-গোছানো পাবেন।

.ভাত হয়তো দুই ক্ষেত্রেই রান্না হবে। কিনতু পারফরমেন্স কোন ক্ষেত্রে ফাস্ট এন্ড বেস্ট হবে সেটাতো বুঝাই যাচ্ছে, তাই না ? এটাই হল Pattern Design এর মহাত্ম। একটা বাড়ির কোথায় কি হবে তা যেমন নির্ধারণ করেন একজন Building Architect, ঠিক তেমনি Pattern Design হল Software Architect দের হাতিয়ার।

.আবার বড় হলের ক্ষেত্রে যদি এমন হয় আপনার গোসল করার শাওয়ার লিক করেছে। তবে দেখা যাবে পানি পুরো হলে ছড়িয়ে পড়েছে। আপনাকে শাওয়ার মেরামত করলেই শুধু হবে না সেই সাথে পুরো রুমে ছড়িয়ে পড়া পানি ড্রেনেজও করা লাগবে। আর দ্বিতীয় ক্ষেত্রে আপনাকে শুধু বাথরুমে গিয়ে শাওয়ার মেইন্টেইন করাই এনাফ। কারণ পানি ড্রেনেজের সিস্টেম সেখানে আগে থেকেই করা আছে।

.আবার যদি এমন হয় আমি আপনাকে নির্দেশ দিলাম। যাও চা রান্না কর। আপনি নিয়ে আসলেন ভাত। আমি বললাম যাও পোলাও রান্না কর। আপনি নিয়ে আসলেন ডিম ভাজি। তখন আমি কি বুঝব? আমি এটাই বুঝব যে, রান্না ঘরে কোন গোলমাল আছে। তাই আমি সমস্যা সমাধানে কিচেনে যাব নাকি বাথরুম বা ডায়নিং রুমে যাব? অবশ্যই কিচেনে তাই না?

.কিনতু একই সমস্যা যদি সেই বড় হল রুমে ক্ষেত্রে হোত তবে? তখন পুরো হল রুমে আমার স্পাই গিরি করা লাগত তাই নয় কি? যা সময় সাপেক্ষ হোত বেশি কেননা আমি জানতাম না ঠিক কোন জায়গায় সমস্যা।

.ঠিক সেই রকম Software Pattern Design এর ক্ষেত্রে কোন কোড ব্লকে সমস্যা বা Bug দেখা দিলে শুধু সেই ব্লকে Fix করলেই কাজ শেষ। পুরো সিস্টেম নিয়ে ভাবতে হবে না।

.আমি কোন কোড ব্লকের কোন ক্লাশ বা ফাংশনে প্রয়োজনীয় আরগুমেন্ট দিলাম কিনতু আউটপুট আসল আনেক্সেপ্টেড। তখন আমি সহজেই বুঝতে পারব যে, কোড ব্লকের সেই জায়গায় সমস্যা আছে। পুরো কোড স্ক্রিপ্টের হাজার হাজার লাইন আমাকে ইনভেস্টিগেট করে সময় নষ্ট করতে হবে না। এভাবে বাগ ফিক্সিং এর কাজও সহজ করে দেয় SDP

.এভাবেই Software Pattern Design আপনার জটিল কাজ গুলোকে সহজ করে দেয়। সেই সাথে encapsulation ও ভাল SDP এর বৈশিষ্ট্য। আমি আপনাকে নির্দেশ দেব যাও ভাত রান্না কর। আপনি রান্না ঘরে গিয়ে রান্না করে নিয়ে আসবেন। আপনি কিভাবে রান্না করে আনলেন সেটা আমার ভাবনার বিষয় নয়। কারণ আমি আগেই ভাত রান্নার সব উপকরণ রান্না ঘরে সিস্টেম করে সাজিয়ে রেখেছি। এখন আমি শুধু নির্দেশ দেব আর আপনি কাজ করবেন। C Programming শিখতে এখানে টু মারুন
সর্বশেষ এডিট : ০৬ ই জুলাই, ২০১৫ রাত ১:৫৬
০টি মন্তব্য ০টি উত্তর

আপনার মন্তব্য লিখুন

ছবি সংযুক্ত করতে এখানে ড্রাগ করে আনুন অথবা কম্পিউটারের নির্ধারিত স্থান থেকে সংযুক্ত করুন (সর্বোচ্চ ইমেজ সাইজঃ ১০ মেগাবাইট)
Shore O Shore A Hrosho I Dirgho I Hrosho U Dirgho U Ri E OI O OU Ka Kha Ga Gha Uma Cha Chha Ja Jha Yon To TTho Do Dho MurdhonNo TTo Tho DDo DDho No Po Fo Bo Vo Mo Ontoshto Zo Ro Lo Talobyo Sho Murdhonyo So Dontyo So Ho Zukto Kho Doye Bindu Ro Dhoye Bindu Ro Ontosthyo Yo Khondo Tto Uniswor Bisworgo Chondro Bindu A Kar E Kar O Kar Hrosho I Kar Dirgho I Kar Hrosho U Kar Dirgho U Kar Ou Kar Oi Kar Joiner Ro Fola Zo Fola Ref Ri Kar Hoshonto Doi Bo Dari SpaceBar
এই পোস্টটি শেয়ার করতে চাইলে :
আলোচিত ব্লগ

মুসলিম কি সাহাবায়ে কেরামের (রা.) অনুরূপ মতভেদে লিপ্ত হয়ে পরস্পর যুদ্ধ করবে?

লিখেছেন মহাজাগতিক চিন্তা, ০৪ ঠা মে, ২০২৪ সকাল ৯:৪৯




সূরাঃ ৩ আলে-ইমরান, ১০৫ নং আয়াতের অনুবাদ-
১০৫। তোমরা তাদের মত হবে না যারা তাদের নিকট সুস্পষ্ট প্রমাণ আসার পর বিচ্ছিন্ন হয়েছে ও নিজেদের মাঝে মতভেদ সৃষ্টি করেছে।... ...বাকিটুকু পড়ুন

মসজিদে মসজিদে মোল্লা,ও কমিটি নতুন আইনে চালাচ্ছে সমাজ.

লিখেছেন এম ডি মুসা, ০৪ ঠা মে, ২০২৪ সকাল ১০:২৩

গত সপ্তাহে ভোলার জাহানপুর ইউনিয়নের চরফ্যাশন ওমরাবাজ গ্রামের এক ব্যক্তির মৃত্যু হয়েছে। লোকটি নিয়মিত মসজিদে যেত না, মসজিদে গিয়ে নামাজ পড়েনি, জানা গেল সে আল্লাহর প্রতি বিশ্বাসী ছিল, স্বীকারোক্তিতে সে... ...বাকিটুকু পড়ুন

গল্পঃ অনাকাঙ্ক্ষিত অতিথি

লিখেছেন ইসিয়াক, ০৪ ঠা মে, ২০২৪ দুপুর ১:১২

(১)
মাছ বাজারে ঢোকার মুখে "মায়া" মাছগুলোর উপর আমার  চোখ আটকে গেল।বেশ তাজা মাছ। মনে পড়লো আব্বা "মায়া" মাছ চচ্চড়ি দারুণ পছন্দ করেন। মাসের শেষ যদিও হাতটানাটানি চলছে তবুও একশো কুড়ি... ...বাকিটুকু পড়ুন

ব্লগে বিরোধী মতের কাউকে নীতি মালায় নিলে কি সত্যি আনন্দ পাওয়া যায়।

লিখেছেন লেখার খাতা, ০৪ ঠা মে, ২০২৪ সন্ধ্যা ৬:১৮

ব্লগ এমন এক স্থান, যেখানে মতের অমিলের কারণে, চকলেটের কারণে, ভিন্ন রাজনৈতিক মতাদর্শের কারণে অনেক তর্কাতর্কি বিতর্ক কাটা কাটি মারামারি মন্তব্যে প্রতিমন্তব্যে আঘাত এগুলো যেনো নিত্য নৈমিত্তিক বিষয়। ব্লগটি... ...বাকিটুকু পড়ুন

ব্লগার'স ইন্টারভিউঃ আজকের অতিথি ব্লগার শায়মা

লিখেছেন অপু তানভীর, ০৪ ঠা মে, ২০২৪ রাত ১১:০৫



সামুতে ব্লগারদের ইন্টারভিউ নেওয়াটা নতুন না । অনেক ব্লগারই সিরিজ আকারে এই ধরণের পোস্ট করেছেন । যদিও সেগুলো বেশ আগের ঘটনা । ইন্টারভিউ মূলক পোস্ট অনেক দিন... ...বাকিটুকু পড়ুন

×