আমি কী ধরণের সমস্যার মুখোমুখি হতে পারি, যদি আমি সফ্টওয়্যার ডিজাইনের প্যাটার্নগুলি ব্যবহার না করি? আপনি কি স্ট্যান্ডার্ড অবজেক্ট-ভিত্তিক কৌশল ব্যবহার করে ডিজাইনের কাছে যাওয়ার সমস্যাগুলি সম্পর্কে বলতে পারেন?
আমি কী ধরণের সমস্যার মুখোমুখি হতে পারি, যদি আমি সফ্টওয়্যার ডিজাইনের প্যাটার্নগুলি ব্যবহার না করি? আপনি কি স্ট্যান্ডার্ড অবজেক্ট-ভিত্তিক কৌশল ব্যবহার করে ডিজাইনের কাছে যাওয়ার সমস্যাগুলি সম্পর্কে বলতে পারেন?
উত্তর:
আপনি বিন্দু মিস করছি।
সফ্টওয়্যার ডিজাইন করার সময় ডিজাইনের প্যাটার্নগুলি অন্তর্নিহিতভাবে উপস্থিত থাকে, ঠিক যেমন বিশ্বের কাঠামোগত নিদর্শন রয়েছে। এমনকি যদি আপনি জিনিসগুলির নাম না জানেন তবে আপনি অবশেষে দেখতে পাবেন যে কিছু শারীরিক কাঠামো কিছু সমস্যার জন্য উপযুক্ত। আপনি দেখতে পাবেন যে কাঠ / ধাতব বার / ইত্যাদির ত্রিভুজ আকারটি খুব স্থিতিশীল কাঠামো, তবে কেবল একটি বিমানে। আপনি দেখতে পাবেন বর্গাকার ইটগুলির কয়েকটি সুবিধা রয়েছে গোলাকারগুলির চেয়ে ...
তেমনি, নির্দিষ্ট সফ্টওয়্যার স্ট্রাকচারগুলি কোনও উপায়ে অনন্য বা সর্বোত্তম। আপনি যদি তাদের নামগুলি জানেন তবে নির্বিশেষে আপনি সেগুলি খুঁজে পাবেন এবং সেগুলি ব্যবহার করবেন। এটি ডিজাইনের নিদর্শনগুলির মূল বিষয় - তারা এই স্ট্রাকচারগুলির নাম যা অভিজ্ঞ প্রোগ্রামাররা যেভাবেই জানেন এবং ব্যবহার করেন। এটি প্রোগ্রামারগুলিকে অনেক বেশি অভিন্ন এবং সংলগ্নভাবে যোগাযোগ করার ক্ষমতা দেয়। এটি প্রোগ্রামারগুলিকে নিদর্শনগুলির ধারণাটি আরও সচেতনভাবে ভাবতে দেয়।
সুতরাং আমি দুটি মূল পয়েন্টগুলি তৈরি করার চেষ্টা করছি:
যাঁরা অতীতকে স্মরণ করতে পারেন না তাদের পুনরাবৃত্তি করার জন্য নিন্দা করা হয়।
আপনার নকশা দ্বারা উত্থাপিত সমস্যাগুলি বাদ দিয়ে আপনি কোনও নির্দিষ্ট সমস্যার মুখোমুখি হবেন না। এবং সময়ের সাথে সাথে আপনি অবহেলা না করে নিদর্শনগুলি ব্যবহার করে শেষ করবেন, আপনি কেবল নিজের দ্বারা এগুলি নির্ধারণ করার জন্য সময় ব্যয় করেছেন। পূর্বেই নিদর্শনগুলি জানার ফলে তাদের নকশায় স্পট করা সহজ হয়ে যায় এবং এই বড় সুবিধাটি বহন করে যে তারা বেশ কয়েকটি ব্যক্তি দ্বারা প্রমাণিত।
আজ যা কিছু বিকাশ করা হচ্ছে তা মূলত পূর্ববর্তী জ্ঞানের উপর ভিত্তি করে তৈরি করা হয়েছে, এটিকে এড়িয়ে যাওয়ার কোনও মানে হবে না। কয়েক শ বছর আগে ক্যাথেড্রাল তৈরি করা লোকেদের যে সমস্যাগুলির মুখোমুখি হয়েছিল তা না জেনে আজ একটি আকাশচুম্বী নির্মাণের কল্পনা করুন।
আমি কী ধরণের সমস্যার মুখোমুখি হতে পারি, যদি আমি সফ্টওয়্যার ডিজাইনের প্যাটার্নগুলি ব্যবহার না করি?
আপনার কোনও সফ্টওয়্যার লিখতে না পারার সমস্যা হবে।
ভেরিয়েবলগুলি একটি ডিজাইনের ধরণ।
পদ্ধতিগুলি একটি ডিজাইনের ধরণ।
অপারেটর - সংযোজন, বিয়োগ, ইত্যাদি - একটি ডিজাইনের ধরণ।
বিবৃতি একটি নকশা নিদর্শন।
মানগুলি একটি নকশার ধরণ।
তথ্যসূত্রগুলি একটি নকশার ধরণ।
এক্সপ্রেশন একটি নকশা নিদর্শন।
ক্লাসগুলি একটি ডিজাইনের ধরণ।
...
আপনি সর্বদা প্রোগ্রামিংয়ে যা কিছু করেন তা ডিজাইনের ধরণ । বেশিরভাগ সময় প্যাটার্নটি আপনার চিন্তায় এতটাই সংযুক্ত থাকে যে আপনি "ডিজাইনের ধরণ" হিসাবে এটি ভাবনা বন্ধ করে দিয়েছেন। "সিঙ্গেলটন প্যাটার্ন" এর মতো আপনাকে যে জিনিসগুলি শিখতে হবে তা হ'ল এমন নিদর্শন যা আপনি এখনও যে ভাষা ব্যবহার করছেন তা (এখনও) বেক করা হয়নি।
আপনি কি স্ট্যান্ডার্ড অবজেক্ট-ভিত্তিক কৌশল ব্যবহার করে ডিজাইনের কাছে যাওয়ার সমস্যাগুলি সম্পর্কে বলতে পারেন?
এই প্রশ্নের অর্থ কী তা আমার কোনও ধারণা নেই। নকশা নিদর্শন হয় "মান অবজেক্ট ওরিয়েন্টেড কৌশল" - যে যা তাদের করে তোলে নিদর্শন ডিজাইন । একটি নকশা প্যাটার্ন হ'ল একটি নির্দিষ্ট সমস্যা সমাধানের জন্য একটি আদর্শ প্রযুক্তি, বিশেষত (যদিও প্রয়োজনীয় নয় ) কোনও বস্তু-কেন্দ্রিক ভাষায়।
The things that you have to learn like "the singleton pattern" and so on are simply patterns that haven't (yet) been baked into whatever language you're using.
- এটি (প্রায়) একটি ডিজাইনের প্যাটার্নের সংজ্ঞা - একটি নমনীয় / সহজেই পুনরায় ব্যবহারযোগ্য কোড কনস্ট্রাক্ট যা ভাষায়ই একটি সীমাবদ্ধতা কাটিয়ে উঠতে ব্যবহৃত হয়, এটি অন্যের সাথে যোগাযোগ করা সহজ। একবার এটি ভাষার অংশ হয়ে গেলে এটি আর নকশার ধরণ নয়।
চিঠির ব্যবহারের চেয়ে ডিজাইনের প্যাটার্নটির বিন্দুটি বোঝা আরও গুরুত্বপূর্ণ। কিছু নিদর্শনগুলি হ'ল, আইএমও, নির্বোধ, কমপক্ষে ভাষা দৃষ্টিতে আমি অভ্যস্ত। আইএমও, এমন একজন প্রোগ্রামার যিনি অন্ধভাবে নকশার নিদর্শনগুলি ব্যবহার করেন এবং সত্যই সেগুলি না বুঝে যিনি নিজেরাই জিনিসগুলির মাধ্যমে চিন্তা করতে চান তার চেয়ে খারাপ প্রোগ্রামার। তবে যে কেউ নিজেকে ধারণাগুলির সাথে পরিচিত করে এবং তারপরে তারা সিদ্ধান্ত নেয় যে তারা সার্থক কিনা সেগুলির চেয়ে সম্ভবত আরও শক্তিশালী প্রোগ্রামার হওয়ার সম্ভাবনা রয়েছে।
এটি বলেছিল, ফ্লাইওয়েটের মূল বিষয়টি কী এবং আমার এটি স্বীকার করতে লজ্জা পাচ্ছে না, আমার কোনও ধারণা নেই! @ # $ (আরও একটি উইকিপিডিয়া প্রবেশের জন্য মন্তব্যগুলি দেখুন যা অনেক সাহায্য করেছে)
আমি ডিজাইনের ধরণগুলিতে উইকিপিডিয়াতে প্রবেশের প্রস্তাব দিই। এটি খুব সংক্ষিপ্ত এবং স্পষ্টভাবে লিখিত। কেন কেউ প্রদত্ত ডিজাইনের প্যাটার্ন দিয়ে বিরক্ত করতে পারে সে সম্পর্কে ধারণা পাওয়ার জন্য খুব সহায়ক। আমি ব্যক্তিগতভাবে সর্বাধিক দরকারী সর্বাধিক দরকারী সন্ধান করি এবং আমার প্রয়োজন অনুসারে কোনও প্যাটার্ন প্রদত্ত বাস্তবায়ন সংশোধন করার বিষয়ে দু'বার ভাবি না think
এগুলি ধারণা, ব্লুপ্রিন্ট নয়। কিছু ভাষায় এগুলি খুব ভাল ধারণা নয়। অন্যদের মধ্যে, তারা ঠিক এমনভাবে দেখা যায় যে কোনও ভাষার নকশার দুর্বলতা কাটিয়ে ওঠার জন্য সেগুলি ক্লডজ হিসাবে দেখা যায় যা কম জটিলতার মধ্য দিয়ে আরও ভাল ক্ষতিপূরণ পেতে পারে। নির্বিশেষে, এগুলি পরীক্ষা করে আপনার নিজের পছন্দসই সমাধানগুলি সিদ্ধান্ত নেওয়ার আগে তারা যে চ্যালেঞ্জগুলি কাটিয়ে উঠেছে তা বোঝার চেষ্টা করে ক্ষতি করে না।
কী ধরণের সমস্যার মুখোমুখি হবেন? আপনি যদি কোনও প্রোগ্রামিং প্রতিভা না পেয়ে থাকেন যাঁর ইতিমধ্যে সমস্ত কিছু বের হয়ে গিয়েছে তবে আপনি সমস্যার চেয়ে আপনার সমস্যার চেয়ে বেশি সময় ব্যয় করতে পারেন। জনপ্রিয় প্রোগ্রামিং আইডিয়াগুলির সমালোচনামূলক চোখ বজায় রাখা গুরুত্বপূর্ণ তবে এটি লোকেরা কী সমাধান করছেন বলে মনে করে তা কখনই আঘাত হানে না কারণ এটি আপনার নিজের পছন্দসই সমাধান / পদ্ধতির জন্য আরও স্পষ্টতা দেয় le
আপনি যে প্রধান সমস্যার মুখোমুখি হবেন তা হ'ল আপনি চাকাটি পুনর্নির্মাণ করবেন । এগুলিকে নিদর্শন বলা হয় কারণ তারা প্রায়শই এবং অনুমানযোগ্য পদ্ধতিতে উপস্থিত হয়।
এমনকি আপনি যদি ডিজাইনের ধরণগুলি অনুসরণ করেন তবে আপনি একটি খারাপ ডিজাইনের সাথে শেষ করতে পারেন। ডিজাইনের নিদর্শনগুলি প্রাকৃতিক এবং আপনি আপনার নকশায় এর কিছু স্বাদ ব্যবহার করে শেষ করবেন। আপনাকে কোনও নিদর্শন ব্যবহার না করার জন্য খুব চেষ্টা করতে হবে। ডিজাইনের ধরণগুলির নিন্দার কারণ নেই, আপনার প্রয়োজনের জন্য সঠিক নিদর্শনগুলি বেছে নেওয়া আরও গুরুত্বপূর্ণ
আপনি উপলব্ধি না করে সারাক্ষণ ডিজাইনের নিদর্শনগুলি ব্যবহার করছেন। জনপ্রিয় ভাষাগুলিতে প্রচুর স্ট্যান্ডার্ড লাইব্রেরি নকশার নিদর্শনগুলি মাথায় রেখে নকশাকৃত করা হয়েছে। উদাহরণস্বরূপ জাভার FileReader
লাইব্রেরি যা সাজসজ্জার নকশা প্যাটার্ন ব্যবহার করে ডিজাইন করা হয়েছে । এখন আপনার নিজের কোড সম্পর্কে কথা বলছেন , আপনি ডিজাইনের ধরণগুলি (বেশিরভাগ ক্ষেত্রে) ব্যবহার করতে বাধ্য হচ্ছেন না। একটি নকশার প্যাটার্ন হ'ল "একটি সাধারণভাবে ঘটে যাওয়া সমস্যার পুনরায় ব্যবহারযোগ্য সমাধান" , এর অর্থ এটি ক্লিনারকে আরও রক্ষণাবেক্ষণযোগ্য কোড লেখার ক্ষেত্রে সহায়তা করবে সুতরাং স্প্যাগেটি কোডটি দিয়ে আপনি কী পরিমাণ এড়াতে চান তা সত্যিই আপনার।