Bdhuge | Technology Journey.
  • Home
  • Business
    • Internet
    • Market
    • Stock
  • Parent Category
    • Child Category 1
      • Sub Child Category 1
      • Sub Child Category 2
      • Sub Child Category 3
    • Child Category 2
    • Child Category 3
    • Child Category 4
  • Featured
  • Health
    • Childcare
    • Doctors
  • Home
  • Business
    • Internet
    • Market
    • Stock
  • Downloads
    • Dvd
    • Games
    • Software
      • Office
  • Parent Category
    • Child Category 1
      • Sub Child Category 1
      • Sub Child Category 2
      • Sub Child Category 3
    • Child Category 2
    • Child Category 3
    • Child Category 4
  • Featured
  • Health
    • Childcare
    • Doctors
  • Uncategorized

Sunday, July 5, 2015

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

 10:37 PM     কম্পিউটার প্রোগ্রামিং     No comments   

শুধু কিছু 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 এর বৈশিষ্ট্য। আমি আপনাকে নির্দেশ দেব যাও ভাত রান্না কর। আপনি রান্না ঘরে গিয়ে রান্না করে নিয়ে আসবেন। আপনি কিভাবে রান্না করে আনলেন সেটা আমার ভাবনার বিষয় নয়। কারণ আমি আগেই ভাত রান্নার সব উপকরণ রান্না ঘরে সিস্টেম করে সাজিয়ে রেখেছি। এখন আমি শুধু নির্দেশ দেব আর আপনি কাজ করবেন। এটাই encapsulation 😀 ...
.
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://tiny.cc/qjk5zx
পূর্বে প্রকাশিতঃ http://tiny.cc/ovk5zx
  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

প্রতিটি পোস্ট পড়ার পর নিজের মতামত যানাতে ভুলবেন না । তবে এমন কিছু মন্তব্য করবেন না যাতে লেখকের মনে আঘাত করে ।

Popular Posts

  • ফ্রিল্যান্সার সাক্ষাৎকার: থ্রিডি ডিজাইনার
    আউটসোর্সিং এ থ্রিডি কাজের রয়েছে ব্যাপক সম্ভা বনা। যত দিন যাচ্ছে ভিডিও গেমস এবং থ্রিডি এনিমেটেড মুভিগুলো আরো বাস্তবসম্মত হয়ে উঠছে, যা খুব স...
  • পেওনার ডেবিট মাস্টারকার্ড
    বিভিন্ন ধরনের ফ্রিল্যান্সিং সাইট থেকে টাকা উত্তোলনের সহজ এবং ঝামেলামুক্ত পদ্ধতি হচ্ছে Payoneer সাইট কর্তৃক প্রদত্ত একটি ডেবিট মাস্টারকার...
  • প্রোগ্রামিং শুরু করার জন্য গাইডলাইন।
    নিজের ভাষা কম্পিউটারকে বুঝানোর জন্যই পোগ্রামিং ল্যাঙ্গুয়েজ এর উৎপত্তি। এ পর্যন্ত কয়েক হাজার পোগ্রামিং ল্যাঙ্গুয়েজের উৎপত্তি হয়েছে। বিশ...
  • ইংলিশ ভোকাবুলারি শেখার দূর্দান্ত ১০ টিপস
    ইংরেজিতে শব্দ আমাদের সবারই কম বেশি জানা আছে। তারপরেও আমরা কোন জটিল বাক্য গঠন করার সময় কিংবা ইংরেজিতে কথা বলার সময় এই শব্দ কম জানার জন্য অনে...
  • আউটসোর্সিং এ আলফা ডিজিটাল টিমের সফলতা
    বর্তমানে ওডেস্ক ( www.oDesk.com ) মার্কেটপ্লেসে বাংলাদেশী ফ্রিল্যান্সররদের অবস্থান বেশ সন্তোষজনক। ওডেস্কে যে কয়জন ফ্রিল্যান্সার সফলতার সা...

Recent Posts

banner image

Categories

অনলাইন আয় আবিষ্কার উইন্ডোজ ১০ উইন্ডোজ ফোন উইন্ডোজ সফটওয়্যার এন্ড্রয়েড ফোন ওয়েবসাইট ডিজাইনিং ওয়েবসাইট ডেভেলপমেন্ট কম্পিউটার প্রোগ্রামিং কোয়ান্টাম কম্পিউটার গ্রাফিক্স ডিজাইন জাভা স্ক্রীপ্ট টিপস অ্যান্ড ট্রিকস ডাটা এন্ট্রি থিমস পাইথন প্রোগ্রামিং বই ব্লগস্পট সাইট ভিডিও এডিটিং মাইক্রোওয়ার্কারস মোবাইল ফোন রেন্ট-এ-কোডার লিনাক্স শিক্ষা সংক্রান্ত সংখ্যা পদ্ধতি সাক্ষাৎকার সি প্রোগ্রামিং হ্যাকিং

Blog Archive

Kategori

Kategori

Recent Comments

Featured Post

ডাউনলোড করে নিন অ্যাডোবি ফটোশপের সর্বশেষ ভার্সন “Adobe Photoshop CC” সম্পূর্ণ ফ্রি আজীবন মেয়াদসহ।

Formulir Kontak

Name

Email *

Message *

মোট পৃষ্ঠাদর্শন

Sparkline
  • Post Style
  • Feature
  • _Gadget
  • _Mobile
  • Pages
  • Categories
  • Buddypress
  • Forum
  • Home
  • About
  • Contact
  • Advertise
  • __DropDown 3
  • _ShortCodes
  • _SiteMap
  • _Error Page
  • Seo Services
  • Documentation
  • Download this template

Blog Archive

  • ▼  2015 ( 125 )
    • ►  September ( 7 )
    • ►  August ( 34 )
    • ▼  July ( 15 )
      • NCTB Class 1 to10 Text Book
      • তিন গোয়েন্দা সিরিজ পরিচিতি এবং এই সিরিজের ৯৫ টি বই...
      • “কুয়াশা” সিরিজের সকল বই ডাউনলোড লিংক।
      • Number System (সংখ্যা পদ্ধতি) (Binary, Octal, Deci...
      • Number System (সংখ্যা পদ্ধতি) (Binary, Octal, Deci...
      • তিন গোয়েন্দা সিরিজের ভলিউম 127
      • হুমায়ূন আহমেদের আত্মকাহিনী ও প্রায় সব বই ডাউনলোড ক...
      • যে কোন ডকুমেন্ট স্ক্যান করুন আপনার উইন্ডোজ ফোন ও অ...
      • গ্রাফিং ক্যালকুলেটর
      • ফাইল যখন মোছে না (Error 0 x 800710 FE)
      • ভালো প্রোগ্রামার হতে হলে সফটওয়্যার ডিজাইন প্যাটার্...
      • সহজ ডাটা এন্ট্রি কাজ করে সহজেই ইনকাম করা যায়
      • কেন আমি প্রোগ্রামিং শিখবো?
      • কোয়ান্টাম কম্পিউটার – ২ (শক্তি এবং সীমাবদ্ধতা)
      • কোয়ান্টাম কম্পিউটার – ১ (কোয়ান্টাম কম্পিউটার কী?)
    • ►  June ( 44 )
    • ►  May ( 25 )

Recent

Comment

Label

  • অনলাইন আয়
  • আবিষ্কার
  • উইন্ডোজ ১০
  • উইন্ডোজ ফোন
  • উইন্ডোজ সফটওয়্যার
  • এন্ড্রয়েড ফোন
  • ওয়েবসাইট ডিজাইনিং
  • ওয়েবসাইট ডেভেলপমেন্ট
  • কম্পিউটার প্রোগ্রামিং
  • কোয়ান্টাম কম্পিউটার
  • গ্রাফিক্স ডিজাইন
  • জাভা স্ক্রীপ্ট
  • টিপস অ্যান্ড ট্রিকস
  • ডাটা এন্ট্রি
  • থিমস
  • পাইথন প্রোগ্রামিং
  • বই
  • ব্লগস্পট সাইট
  • ভিডিও এডিটিং
  • মাইক্রোওয়ার্কারস
  • মোবাইল ফোন
  • রেন্ট-এ-কোডার
  • লিনাক্স
  • শিক্ষা সংক্রান্ত
  • সংখ্যা পদ্ধতি
  • সাক্ষাৎকার
  • সি প্রোগ্রামিং
  • হ্যাকিং

Tags

অনলাইন আয় আবিষ্কার উইন্ডোজ ১০ উইন্ডোজ ফোন উইন্ডোজ সফটওয়্যার এন্ড্রয়েড ফোন ওয়েবসাইট ডিজাইনিং ওয়েবসাইট ডেভেলপমেন্ট কম্পিউটার প্রোগ্রামিং কোয়ান্টাম কম্পিউটার গ্রাফিক্স ডিজাইন জাভা স্ক্রীপ্ট টিপস অ্যান্ড ট্রিকস ডাটা এন্ট্রি থিমস পাইথন প্রোগ্রামিং বই ব্লগস্পট সাইট ভিডিও এডিটিং মাইক্রোওয়ার্কারস মোবাইল ফোন রেন্ট-এ-কোডার লিনাক্স শিক্ষা সংক্রান্ত সংখ্যা পদ্ধতি সাক্ষাৎকার সি প্রোগ্রামিং হ্যাকিং

Facebook

banner image

Flickr

banner image

Football

Popular Posts

  • ফ্রিল্যান্সার সাক্ষাৎকার: থ্রিডি ডিজাইনার
    ফ্রিল্যান্সার সাক্ষাৎকার: থ্রিডি ডিজাইনার
  • পেওনার ডেবিট মাস্টারকার্ড
    পেওনার ডেবিট মাস্টারকার্ড
  • প্রোগ্রামিং শুরু করার জন্য গাইডলাইন।
    প্রোগ্রামিং শুরু করার জন্য গাইডলাইন।

Sample Text

Copyright © Bdhuge | Technology Journey. | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By blogger Templates