ভালো প্রোগ্রামার হতে হলে Software Design Pattern সম্পর্কে অন্তত বেসিক জ্ঞান থাকলেও থাকা জরুরী ।
শুধু কিছু 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 করলেই কাজ শেষ … পুরো সিস্টেম নিয়ে ভাবতে হবে না
...
.
এভাবেই Software Pattern Design আপনার জটিল কাজ গুলোকে
সহজ করে দেয় ... সেই সাথে encapsulation ও ভাল SDP এর বৈশিষ্ট্য … আমি
আপনাকে নির্দেশ দেব যাও ভাত রান্না কর … আপনি রান্না ঘরে গিয়ে রান্না করে
নিয়ে আসবেন … আপনি কিভাবে রান্না করে আনলেন সেটা আমার ভাবনার বিষয় নয় …
কারণ আমি আগেই ভাত রান্নার সব উপকরণ রান্না ঘরে সিস্টেম করে সাজিয়ে রেখেছি …
এখন আমি শুধু নির্দেশ দেব আর আপনি কাজ করবেন ... এটাই encapsulation
grin emoticon ...
.
1994 সালে Erich, Richard, Ralph ও John মিলে একটি বই লিখেন যার নাম ছিল
... Design Patterns - Elements of Reusable Object-Oriented Software … এই
চারজনকে একসাথে বলা হয় Gang of Four বা সংক্ষেপে GoF … GoF pattern এর
শ্রেণী ভাগ গুলো হল … Creational, Structural ও Behavioral … রয়েছে বিভিন্ন
রকমের SPD যেমনঃ Facade, Bridge, Adapter ইত্যাদি ...
.
থীমফরেস্টে Kriesi এর থীমগুলো খুব বেশি সেল হয় তাই না … অথবা Total,
Impreza, Brroklyn, Kleo থীম গুলোর সেল অনেক বেশি … এক একটার ইনকাম কোটি
টাকারও উপরে তাই না ? … শুধুই কি ডিজাইন আর মার্কেটিংই সব ? … না আসলে এদের
কোড কোয়ালিটিও এ প্লাস গ্রেড …
.
WPExplorer থীমগুলো দেখেন
ডিজাইনের দিক দিয়ে খুবই সাদামাটা … কিনতু সেল ভলিউমও কি সাদামাটা ? …
WPExplorer এর AJ এর যে ওয়ার্ল্ড ক্লাস কোড কোয়ালিটি কিনতু একজন অথর হিসেবে
তার সাফল্যের অনেক বড় কারণ … AJ এর থীম গুলোর পারফরম্যান্সই আলাদা …
এজন্যই সিরিয়াস বায়াররা যাদের ওয়েব ডেভেলপিং জ্ঞান খুব ভাল ... থীম কেনার
ক্ষেত্রে এদের গুরুত্ব দেয় বেশি ...
.
তাই আপনি যদি ভাল
আইটেম ডেভেলপ করতে চান, WP Plugin Developer বা Theme Developer হোন বা হোন
Android বা iOS Apps Developer … আপনার প্রোগ্রামিং জ্ঞানকে নেক্সট লেভেলে
নিয়ে যেতে ডিজাইন প্যাটার্ন নিয়ে পড়াশোনা করুন … দেখবেন আপনার কাজ গুলো কত
সোজা হয়ে যাচ্ছে … সেই সাথে বেড়ে যাচ্ছে কোড কোয়ালিটি ও সফটওয়্যার
পারফরমেন্স …
.
ডিজাইন প্যাটার্ন নিয়ে যাদের কোন পড়াশোনা নেই
… PHP এর বেসিক লেভেল পার হয়ে Advanced লেভেলে আছেন … থীমফরেস্টে আরও ভাল
করতে চান তারা চাইলে ঢু মেরে আসতে পারেন নিচের লিঙ্কে …
.
TutsPlus এর এই টিউটোরিয়ালে PHP তে ব্যবহৃত ৭ ধরণের Design Pattern নিয়ে
খুবই সুন্দর ভাবে আলোচনা করা হয়েছে … আপনার প্রোগ্রামিং জ্ঞানকে আরও ধারাল
করুন … নিয়ে যান নেক্সট লেভেলে ...
http://goo.gl/pqTC5T
*Written by- Din Muhammad Sumon