ডিজাইনের নিদর্শনগুলি কি ভ্রান্ত?


135

আমি আমাদের প্রবীণ বিকাশকারীদের সাথে 20 বছর ধরে ব্যবসায়ের সাথে আলোচনা করেছি। তিনি লেখেন এমন একটি ব্লগের জন্য তিনি অন্টারিওতে বেশ পরিচিত।

আশ্চর্যের বিষয়টি তিনি আমাকে বলেছিলেন: তিনি বলেছিলেন যে কোডের একটি টুকরো রয়েছে যা কাজ করা দুঃস্বপ্ন, কারণ এটি একটি পাঠ্যপুস্তক থেকে লেখা হয়েছিল, এবং এটি সত্যিকারের বিশ্বের জন্য দায়বদ্ধ নয়। ইউআই / ডাটাবেস / ডেটা স্তরটিতে একটি নতুন ক্ষেত্র যুক্ত করতে 2-3 ঘন্টা সময় লাগে, তার কোডে এটি 30 মিনিট সময় নেয়।

অন্য জিনিসটি হ'ল তিনি নকশাগুলির নিদর্শনগুলি এড়িয়ে যান কারণ বেশিরভাগ প্রোগ্রামার সেগুলি বুঝতে পারে না এবং রক্ষণাবেক্ষণের দিক থেকে এগুলি ভাল নয়।

তারপরে এই ধারণাটিও রয়েছে যে কানাডার বেশিরভাগ ওয়েব বিকাশকারীরা তাদের ডেটা মডেলটিকে পৃথক করে রাখার পরিবর্তে ডেটা স্তর শ্রেণীর উত্তরাধিকারী করা পছন্দ করে। আমি তাকে জিজ্ঞাসা করেছি, "মডেলটি ডেটা স্তর থেকে পৃথক হওয়া কি শিল্পের মান নয়?" তিনি কখনও কখনও বলেছিলেন, তবে এখানকার বেশিরভাগ লোকেরা এটি না করা পছন্দ করেন কারণ এটি খুব বেশি কাজ।

সেরা অনুশীলনগুলি ব্যবহার করে কোডিং না করার পক্ষে তার যুক্তিটি মনে হচ্ছে কারণ এটি রক্ষণাবেক্ষণের দুঃস্বপ্ন, আমাদের কয়েকজন কর্মচারী এটি বুঝতে পারে (আমার পাশাপাশি), এবং আপনাকে যদি কয়েক দিনের মধ্যে নতুন বৈশিষ্ট্য বা ক্ষেত্রগুলি সরিয়ে দেওয়ার প্রয়োজন হয় তবে এটি কাজ করতে ধীর হয় ' সময়।

স্ট্যাক ওভারফ্লো বেশিরভাগ ক্ষেত্রে শিল্পের মান অনুসরণ করতে মানুষকে উত্সাহিত করে তা বিবেচনা করে এ জাতীয় মতামত শুনে খুব অবাক করা হয়। আমরা যে সমস্যাটি প্রতিনিয়ত বেশিরভাগ ক্ষেত্রে নতুন ক্ষেত্রগুলি এবং বৈশিষ্ট্যগুলি মন্থন করতে বাধ্য করি, এটি যথেষ্ট নমনীয় যে শক্ত নিদর্শনটি বের করা সম্ভব নয়? এটি এ থেকে আমি যা বুঝি তার সংক্ষেপ বলে মনে হয়।

আপনি এই বিবৃতি কি করবেন?



67
ব্যক্তিগতভাবে আমি "সেরা অনুশীলন" হিসাবে প্রমাণিত কোনও কিছু থেকে ঘাবড়ে যাচ্ছি (সমর্থনযোগ্যতা ছাড়াই) কারণ এটির সাধারণত অর্থ হয় "আমি জানি না কেন এটি একটি ভাল ধারণা তবে আমি চাই যাই হোক আপনি এটি করতে চান; আলোচনার সমাপ্তি"
রিচার্ড টিংল

34
শিল্পের মান, নকশার প্যাটার্ন এবং সর্বোত্তম অনুশীলনগুলি কেবল "শর্তাবলী যা" কেউ বলেছিলেন যে তাদের প্রসঙ্গে ভাল কাজ করা যায় তাই এটি আপনার উপরও শুদ্ধ হয়ে যায় probably সম্ভবত "সম্ভবত" ®। তোমার সিনিয়র দেবের অধিকার
CptEric

86
এগিলির সাথে এর কোনও যোগসূত্র নেই।
হালকা ঘোড়দৌড়

68
"সিনিয়র এমভিসি বিকাশকারী" "ডিজাইনের ধরণগুলি খারাপ" জ্ঞানীয় বিভেদ
ড্যান প্যান্ট্রি

উত্তর:


239

এগুলি এমন কোনও ব্যক্তির কথা যা সফলতা পেয়েছে এবং এমন লোকদের উপেক্ষা করে যা তাকে বোঝায় না যে প্যাটার্ন জারগনে কী করা উচিত যা তিনি বুঝতে পারেন না।

নকশার নিদর্শন এবং সেরা অনুশীলনগুলি একই জিনিস নয়। কিছু লোক তারা মনে করে এবং এমন লোকদের তাড়িয়ে দেয় যারা জানে তারা বাদাম কী করছে doing তারা কী করছে তার সঠিক নাম না জানা থাকলেও।

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

এই লোকটি সম্ভবত আপনারা কেউই কখনও শোেনি নিদর্শনগুলি ব্যবহার করছে। এটি ঠিক আছে, যতক্ষণ না আপনার সাথে কীভাবে কিছু করা হয় তার বিষয়ে কথা বলা দরকার। তিনি হয় আপনার সাথে কীভাবে কথা বলতে হয় তা শিখতে হবে বা আপনি তার সাথে কীভাবে কথা বলতে হবে তা শিখতে হবে। "সঠিক" এর সাথে কিছু করার নেই।


12
এই চুক্তির সাথে একমত হয়েছিলেন যে, বর্তমানে যখন বেশিরভাগ লোকেরা "ডিজাইনের ধরণ" শব্দটি ব্যবহার করেন, তখন তারা সাধারণত গ্যাং অফ ফোরকে বোঝায় ।
রবার্ট হার্ভে

35
ডান এবং আমি ইংরেজি ব্যবহার করতে পছন্দ করি, এটি আমার কাছে বোধগম্য। ফরাসী লোকেরা কেন এটি গ্রহণ করতে এত দিন নিচ্ছে তা জানেন না। যতক্ষণ না তারা না করে আমি এই মেট্রিক সিস্টেমটি সম্পর্কে শুনছি তা সম্পর্কে কিছুটা শিখতে চলেছি।
candied_orange

6
এটি এমনটি নাও হতে পারে যা তিনি বুঝতে পারেন না, এটিও হতে পারে যে তিনি বুঝতে পেরেছেন তবে তিনি জানেন যে সমস্ত পরিস্থিতিতে সমস্ত কিছুই প্রযোজ্য নয়।
হোয়াসনাম

148
"নাম থাকার একটি প্যাটার্ন এটি ভাল জিনিস করে না It এটি এটিকে একটি স্বীকৃত জিনিস হিসাবে পরিণত করে।" ওহে আমার god
শ্বর

7
@ জনডগজেন তাদের বলা হয় (বিরোধী) নিদর্শন কারণ এগুলি সফ্টওয়্যার বিকাশেরও সাধারণ প্যাটার্ন (যার মধ্যে কিছু নকশা-সম্পর্কিত নিদর্শন)।
জেএবি

96

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

যেহেতু অনেকগুলি ব্যবহারের সম্ভাব্য পরিস্থিতি পূরণের জন্য ভাল ডিজাইনের ধরণগুলির প্রয়োজন হয়, সেগুলি অতিরিক্ত ইঞ্জিনিয়ারড হওয়ার প্রবণতা। ওভার-ইঞ্জিনিয়ারড কোডটির একটি মূল্য রয়েছে: আপনাকে এটি পড়তে হবে, এটি কী করে তা বুঝতে হবে এবং এটি সম্পূর্ণ সফ্টওয়্যার সিস্টেমের প্রসঙ্গে কীভাবে কাজ করে তা বুঝতে হবে। ফলস্বরূপ, অন্য কোনও সফ্টওয়্যার বিকাশের কৌশলগুলির মতো, আপনাকে কৌশলটি ব্যবহারের ব্যয়ের তুলনায় কৌশলটি মূল্যায়ন করতে হবে এবং সুবিধাগুলি ব্যয়ের চেয়ে বেশি কিনা তা সিদ্ধান্ত নিতে হবে।

অন্যান্য সমস্ত জিনিস সমান হচ্ছে, কম কোড সর্বদা ভাল। আমি স্তরযুক্ত আর্কিটেকচারের মধ্য দিয়ে এসেছি যেখানে আকর্ষণীয় যে কোনও কোড খুঁজে পেতে আপনাকে একাধিক প্রকল্পের মাধ্যমে আক্ষরিক অর্থে তিন থেকে ছয়টি হপ তৈরি করতে হবে , যার অর্থ, কোড যা আসলে ওভারহেড যুক্ত করা ছাড়া অন্য কিছু সম্পাদন করে।

সুপরিচিত সফ্টওয়্যার নিদর্শনগুলি আপনাকে একটি সাধারণ শব্দভাণ্ডার দেওয়ার কথা বলে যার দ্বারা আপনি ডিজাইনের কৌশলগুলি যোগাযোগ করতে পারেন। দুর্ভাগ্যক্রমে, অনেক সফ্টওয়্যার বিকাশকারী তাদের প্রোগ্রামিং সমস্যাগুলিতে এটি যথাযথভাবে প্রয়োগ করার জন্য সফ্টওয়্যার প্যাটার্নের ভোকাবুলারিটি ভালভাবে বুঝতে পারে না। অনভিজ্ঞ বিকাশকারীরা এই নিদর্শনগুলি বিশেষজ্ঞদের ডোমেনের মধ্যে থাকা হিসাবে দেখেন; তারা বিশেষজ্ঞ হিসাবে দেখাতে চায় এবং তাই তারা প্রস্তুত হওয়ার আগে খুব শীঘ্রই প্যাটার্নগুলি শিখতে এবং প্রয়োগ করার চেষ্টা করে। পরিবর্তে তাদের আসলে কী করা উচিত তা হ'ল প্রথমে প্রোগ্রামিংয়ের মৌলিক বিষয়গুলি শেখার উপর দৃষ্টি নিবদ্ধ করা এবং তারপরে প্রতিটি প্যাটার্ন তাদের সমাধান করে এমন সমস্যার সমাধান করার চেষ্টা করে। যদি তারা এটি করে, তারা নিদর্শনগুলি সঠিকভাবে বুঝতে এবং প্রয়োগ করার জন্য আরও অনেক ভাল অবস্থানে থাকবে।


19
ঠিক আছে, আপনি নিজের প্রশ্নে যা বর্ণনা করছেন তার চেয়ে ভিন্ন সমস্যা। আমি এখন যে দোকানটিতে কাজ করি তা জীবন্ত প্রমাণ যে আপনি চটপটে হতে পারেন এবং এখনও খুব পরিষ্কার, চর্বিযুক্ত কোড থাকতে পারে যা বজায় রাখা সহজ তবে এটি বেশিরভাগ জাভা শপগুলিতে আপনি দেখেন এমন সাধারণ উদ্যোগ, বহু-স্তরযুক্ত জিনিস নয় এবং এটি মোটামুটি it's এর পদ্ধতির "অ-মানক"। অ্যাপ্লিকেশনগুলিকে "এন্টারপ্রাইজ" উপায়ে তৈরি করার মতো এক বছর আমাদের নেই।
রবার্ট হার্ভে

34
@ আইগনিয়াস 01
রবার্ট হার্ভে

8
"দুর্ভাগ্যক্রমে, অনেক সফ্টওয়্যার বিকাশকারী তাদের প্রোগ্রামিং সমস্যাগুলিতে এটি যথাযথভাবে প্রয়োগ করার জন্য সফ্টওয়্যার প্যাটার্ন ভোকাবুলারিটি ভালভাবে বুঝতে পারে না।" এই আমি সংক্ষেপে। =) আমি যে কয়েকজনের নাম দেখেছি , তাদের বাস্তব বাস্তবায়নের জন্য আমার পক্ষে খুব কঠিন সময় কাটছে। আমার সম্ভবত আমি লিখেছি কোডের ব্লক রয়েছে যা প্রয়োগের নিদর্শন হিসাবে শ্রেণীবদ্ধ করা যেতে পারে তবে আমি নিশ্চিত যে কোনটি আপনাকে বলতে পারিনি। আমি ভাবতে এসেছি যে কোডগুলি প্রকৃতপক্ষে বর্ণনামূলকযোগ্য হওয়ার চেয়ে প্যাটার্নগুলি খুব কম গুরুত্বপূর্ণ এবং প্রয়োজনীয়তার পরিবর্তনগুলি কেবল কয়েকটি কোডের জায়গায় প্রভাবিত করে।
jpmc26

35
আমি যখন শিশুরূপে "কম কোডটি সর্বদা ভাল" তখনই বিষয়টি গ্রহণ করব কারণ আমি জানি যে এটি ব্রেইনফাকের মতো দেখায় এমন কোডের দিকে পরিচালিত করে , আমি আগ্রহের সাথে "প্যাটার্ন ভ্যাকাবুলারি" পয়েন্টের সাথে একমত হব। আপনি যে পাঠ্যপুস্তকে এটি খুঁজে পাচ্ছেন না বলেই আমার কোডটি বকাঝকা বলে অভিযোগ করবেন না। আমার কোড ক্রেপ কল করার জন্য অনেকগুলি সঠিক কারণ রয়েছে, তবে এটি তাদের মধ্যে একটি নয়।
candied_orange

23
"ওভারহেড যোগ করার পরিবর্তে অন্য কিছু সম্পাদন করে এমন কোড" - আমি ভেবেছিলাম এন্টারপ্রাইজ সফ্টওয়্যারটির লক্ষ্য হ'ল এমন কোনও কোড থাকা উচিত নয় যা আসলে কোনও কিছু সম্পাদন করে । সফ্টওয়্যারটির যে কোনও আসল আচরণ হতে পারে, তা হয় স্তরিত ডিজাইনের একটি উত্থাপিত সম্পত্তি হওয়া উচিত, অথবা অন্যথায় কোডটি ডেটা হিসাবে বিবেচনা করে এমন ব্যবসায়ের বিধিগুলি থেকে সারণী-চালিত হওয়া উচিত। আমি মাত্র 50% রসিকতা করছি।
স্টিভ জেসোপ

86

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

তবে আপনার প্রশ্নের সরাসরি জবাব দেওয়ার জন্য: নকশার ধরণগুলির সাথে সমস্যা উত্তরাধিকারের মতোই - প্রচুর মধ্যবিত্তরা তাদের অতিরিক্ত ব্যবহার করে, এতে কোড বজায় রাখা খুব বেশি ওষুধযুক্ত তৈরির একটি নির্দিষ্ট ঝুঁকি রয়েছে। তবে এর উত্তর অবশ্যই নকশা নিদর্শন (বা উত্তরাধিকার) সম্পূর্ণরূপে এড়ানো বা নিষেধ করা নয়, উত্তরটি এই সরঞ্জামগুলি এমন পরিস্থিতিতে ব্যবহার করা শিখছে যেখানে তারা বোঝায় এবং কেবল সেখানে। এবং এটি "চটজলদি" কাজ করা থেকে সম্পূর্ণ স্বাধীন।


আমি মনে করি আপনার বক্তব্যটির নির্দিষ্টতা "নকশার নিদর্শনগুলির সাথে সমস্যাও উত্তরাধিকারের মতো একই রকম - প্রচুর মধ্যম ডিভস তাদেরকে অতিরিক্ত ব্যবহার করে" অপ্রয়োজনীয় ... কোডিংয়ের সমস্ত দিকগুলির সাথে, কোনও বিকাশকারী কোনও কিছুর যথাযথ ব্যবহারের জন্য শিক্ষিত হতে পারে না এবং প্রায়শই এটির অপব্যবহার করবে এবং উপ-অনুকূল কোডটি লিখবে। এটি সাধারণভাবে বিকাশের একটি অলঙ্কার হিসাবে বিবেচিত হতে পারে।
জেরেমি হলোভাকস

1
@ জেরেমি হোলোভ্যাক্স: ঠিক নয়। আমি যে সমস্যাটি দেখছি তা হ'ল এমনকি শিক্ষিত বিকাশকারীরাও তাদের অতিরিক্ত ব্যবহার করেন। আমি প্রায়শই সমাধানগুলি দেখেছি যেখানে অভিজ্ঞ ডিভস কোনও সমস্যাটিকে একটি প্যাটার্নে জুতা দেওয়ার চেষ্টা করেছিলেন যা "কোনওভাবে" ফিট করে তবে ভাল হয় না।
ডক ব্রাউন

45
  1. নকশার নিদর্শনগুলি ধারণাগুলি যোগাযোগের জন্য ব্যবহৃত নাম। আমি প্রায়শই নিজেকে এমন জিনিসগুলি করতে দেখলাম যা পরে খুঁজে পেয়েছিল যেগুলির একটি নাম আছে। সুতরাং, কোনও "নকশা নকশার উপায়" এর বিপরীতে কোনও "নকশার নকশার উপায়" নেই।

  2. নকশা নিদর্শন গাইডলাইন হয়। সবকিছু হিসাবে, তাদের প্রত্যেকের সুবিধা এবং অসুবিধা রয়েছে। মূলটি হ'ল প্যাটার্নটি শিখতে এবং এটি যেখানে এটি ফিট করে সেখানে প্রয়োগ করা নয় বরং প্যাটার্নটির ধারণা, এটির সুবিধাগুলি এবং অসুবিধাগুলি বুঝতে এবং এটি আপনার সমস্যার সমাধানের জন্য অনুপ্রেরণা পেতে ব্যবহার করতে হবে।

  3. যথেষ্ট ভাল কারণ থাকলে প্রতিটি সেরা অনুশীলন এবং নির্দেশিকা অগ্রাহ্য করা যেতে পারে। বৈধ কারণগুলির মধ্যে বিকাশের সময় এবং অ্যাপ্লিকেশন থেকে প্রত্যাশা অন্তর্ভুক্ত। উদাহরণস্বরূপ, আমি সচেতন যে হার্ডকোড মানগুলির (বোকা উদাহরণ) এর পক্ষে খারাপ তবে ধারণা প্রমাণের জন্য, সুবিধাগুলি ব্যয় ছাড়িয়ে যেতে পারে (এই ক্ষেত্রে, বেশিরভাগ বিকাশের সময়)। যাইহোক, যদি এর মতো সিদ্ধান্ত নেওয়া হয় তবে তা পিছিয়ে যেতে পারে এবং কোনও সময়ে রিফ্যাক্টরিংয়ের প্রয়োজন হতে পারে।


5
RE: নম্বর 1, হ্যাঁ, সেখানে ছিলেন - আমি টেম্পলেট প্যাটার্নটি আবিষ্কার করেছি। আমি শুধু এটি প্রথম না। বা প্রথম মত কিছু।
গ্রিম দ্য Opiner

29

স্যুপে আরেকটি রূপক যুক্ত করতে, নকশার ধরণগুলি মাইক্রোসফ্ট অফিসের সহায়িকা ক্লিপি। "মনে হচ্ছে আপনি পুরো গুচ্ছ সামগ্রীতে একই জিনিস করছেন। আমি আপনাকে ইলেটর বা দর্শনার্থীর প্রস্তাব দিয়ে কী তাতে সহায়তা করতে পারি?"

এই নিদর্শনগুলির একটি ভাল লিখন আপ ইঙ্গিত দেয় যে যখন এটি আগে অনেকবার করা হয়েছিল একইভাবে কিছু করা কার্যকর হয়, আপনি প্রথমবার চেষ্টা করার পরে কোন ভুলগুলি করবেন এবং সেই ভুলগুলি এড়াতে কোন সাধারণ উপায় খুঁজে পাওয়া গেছে । সুতরাং আপনি নকশার প্যাটার্নটি পড়েন (বা স্মৃতি থেকে এটি পর্যালোচনা করুন) এবং তারপরে আপনি আপনার কাজটি চালিয়ে যান। আপনি কি পারবেন না, দ্বারা পেতে হয় শুধুমাত্র Clippy এবং উইজার্ড ব্যবহার করে।

অনভিজ্ঞ লোকেরা যেখানে ভুল হতে পারে এবং এমন কোড লিখতে পারে যা বাস্তবতার বিষয়টি বিবেচনা করে না, তারা যখন মনে করেন যে তাদের নকশার ধরণগুলির তালিকাটি সফ্টওয়্যারে সমস্যা সমাধানের সমস্ত সম্ভাব্য পদ্ধতির সম্পূর্ণ তালিকা এবং ডিজাইনের সাথে সংযোগ স্থাপনের মাধ্যমে কোড ডিজাইনের চেষ্টা করবেন এটি শেষ না হওয়া পর্যন্ত নিদর্শনগুলি। বনভূমিতে আরও একটি দুর্বল কৌশল অবলম্বন করা হ'ল জুতো-হর্ন এমন একটি পরিস্থিতিতে নকশার প্যাটার্ন দেওয়া যা এটির পক্ষে উপযুক্ত নয়, এই ভিত্তিতে ডিজাইনের প্যাটার্নটি "সর্বোত্তম অনুশীলন"। না, এটি যে সমস্যার সমাধান করে তা শ্রেণীর জন্য এটি সর্বোত্তম অনুশীলন বা নাও হতে পারে , তবে এটি সমাধান করতে ব্যর্থ যে সমস্যাগুলির পক্ষে সমাধান করা বা সমস্যা সমাধানের পক্ষে সহজ সমাধানের পরে কেবল অনর্থক জটিলতার পরিচয় দেওয়ার মাধ্যমে এটি সবচেয়ে ভাল অনুশীলন নয় for ।

অবশ্যই কারও পক্ষে YAGNI এর ভিত্তিতে কোনও প্যাটার্ন এড়ানো সম্ভব হয়, তারপরে তারা বুঝতে পারে যে তাদের এটির দরকার আছে এবং সাধারণ সমাধানের দিকে ঝাঁপিয়ে পড়ে। এটি প্রথম থেকেই প্রয়োজনীয়তা উপলব্ধি করার চেয়ে সাধারণত (তবে সর্বদা নয়) খারাপ এবং কেন সম্পূর্ণ চর্চাযোগ্য প্রয়োজনীয়তাগুলি প্রাথমিকভাবে আবিষ্কার না করা সত্ত্বেও চতুর বিকাশে এটি হতাশাব্যঞ্জক। আমি একমাত্র সি ++ প্রোগ্রামার হতে পারিনি যিনি অত্যন্ত আনন্দিত হয়েছিলেন যে জাভা প্রাথমিকভাবে জেনেরিক ধারকগুলিকে অযথা জটিল হিসাবে প্রত্যাখ্যান করেছিল, পরে সেগুলি আবার বোল্ট করে দেয়।

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

ইউআই / ডাটাবেস / ডেটা স্তরটিতে একটি নতুন ক্ষেত্র যুক্ত করতে 2-3 ঘন্টা সময় লাগে, যেখানে তার কোড হিসাবে এটি 30 মিনিট সময় নেয়।

আপনি এটির সাথে সত্যই তর্ক করতে পারবেন না: এই মেট্রিক দ্বারা তাঁর নকশা অন্যটির তুলনায় অনেক ভাল। যে হোক না কেন , কারণ তিনি নকশা নিদর্শন এড়ানো যদিও প্রশ্নবিদ্ধ, আমি মনে করি কারণ তিনি সঠিক "বাস্তব বিশ্বের" সমস্যা বিবেচিত যখন এটি নকশা সম্ভাবনা বেশি, এবং অভিজ্ঞতা সুবিধার সঙ্গে একটি পাঠ্যপুস্তক এবং একমাত্র সশস্ত্র কেউ চেয়ে চাকরীর উত্তম উচ্চ আদর্শ।

সুতরাং তিনি স্বীকৃতি দিয়েছিলেন যে যে কোনও প্যাটার্নের জন্য আপনাকে ক্ষেত্র যুক্ত করতে কোডের বিভিন্ন পয়েন্টের অনেকগুলি স্পর্শ করা দরকার তা কাজের জন্য খারাপ প্যাটার্ন, "ক্ষেত্রগুলি যুক্ত করা সহজ করুন", এবং তিনি এই নিদর্শনগুলি ব্যবহার করেন নি। স্তরযুক্ত স্থাপত্যগুলি প্রকৃতপক্ষে সেই শ্রদ্ধায় ভুগতে পারে এবং তাদের অসুবিধাগুলি প্রশংসা না করে ডিজাইনের নিদর্শনগুলি ব্যবহার করা ভুল।

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

নকশা নিদর্শনগুলির একটি মেনু থেকে বাছাই করা অবশ্যই আপনাকে সবচেয়ে গুরুত্বপূর্ণ উদ্বেগগুলি সম্পর্কে ভাবতে বাধা দিতে পারে। তবে আপনি যখন কোনও ভিজিটর লিখছেন এবং স্বীকৃতি জানাচ্ছেন এবং পাঠকদের এটি দ্রুত পেতে সহায়তা করার জন্য এটি "দর্শনার্থী" নথিভুক্ত বা নামকরণ করছেন, তেমন কোনও কিছুর পথে আসে না। লিখন "এই একটি ভিজিটর হল" পরিবর্তে এটি সঠিকভাবে দলিল কারণে আপনার সিনিয়র দেব দেয় জন্য একটি ভয়ানক ভুল হয় - প্রোগ্রামারদের এটা বুঝতে হবে না। এমনকি প্রোগ্রামাররা যারা ভিজিটর কী তা জানে কেবল "এটি একজন দর্শক" এর চেয়ে আরও বেশি তথ্যের প্রয়োজন।


5
"ডিজাইনের ধরণগুলি হ'ল ক্লিপি মাইক্রোসফ্ট অফিস সহায়ক" আমি আজ রাতের স্বপ্ন দেখতে যাচ্ছি।
মেটালমাইকস্টার

"অনভিজ্ঞ লোকেরা যেখানে ভুল হতে পারে [যখন তারা] কোডটি নকশা করার চেষ্টা করে কাজটি শেষ না হওয়া পর্যন্ত ডিজাইনের নিদর্শনগুলির সাথে সংযুক্ত করে" " শুনতে শুনতে. আমি আশা করি যে আমি একাধিক উপার্জন দিতে হবে। :)
কুইকসপ্লসোন

আমিও চূড়ান্ত অনুচ্ছেদের জন্য আমার একাধিক উপাখ্যান রয়েছে বলে আশা করি। ডিজাইনের নিদর্শনগুলি প্রোগ্রামিংয়ের ভোকাবুলারি : আপনার যদি বৃহত শব্দভাণ্ডার থাকে তবে আপনি আরও ভাল এবং পরিষ্কার লেখক হবেন । আমি যখন কোনও বিল্ডারের কাছ থেকে একটি কারখানা দেখি সেগুলি বলতে পারি, তবে ডিজাইনের নিদর্শনগুলির উপর বই পড়া থেকে আমি এটি পাইনি, কোনও ইংরেজি অভিধান পড়ে ব্লফের কাছ থেকে কীভাবে ক্রেগ বলতে হয় তা শিখতে চেয়েছি
কুইকসপ্লসোন

20

আপনার সহকর্মী এনআইএইচ সিনড্রোমে ভুগছেন বলে মনে হচ্ছে ("এখানে উদ্ভাবিত নয়")।

এটি পুরোপুরি প্রশংসনীয় যে তার কোডটি নতুন ক্ষেত্র যুক্ত করা আরও সহজ করে তোলে: আমি অন্য লোকদের দ্বারা লিখিত কোডের চেয়ে নিজের কোড আপডেট করার চেয়ে আরও দ্রুত। কিন্তু এই স্বল্প-মেয়াদী গতি কোডটির রক্ষণাবেক্ষণ এবং বহনযোগ্যতা সম্পর্কে কিছুই বলে না। আমি তাকে সন্দেহের সুবিধা দেব: বিদ্যমান কোডটি অবশ্যই খারাপভাবে কাঠামোযুক্ত হতে পারে যদি এটি কোনও পাঠ্যপুস্তকে খারাপভাবে অনুসরণ করে বা ভুল প্রসঙ্গে একটি ভাল রেসিপি অনুসরণ করে।

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

  • সম্ভবত আপনার সহকর্মী আমাদের বেশিরভাগের চেয়ে সত্যিই অনেক বেশি বুদ্ধিমান এবং তিনি লক্ষণীয় উত্পাদনশীলতা হ্রাস ছাড়াই পুনর্নবীকরণের ধরণগুলির ওভারহেড বহন করতে পারেন?

  • "প্রোগ্রামাররা ডিজাইনের ধরণগুলি বুঝতে পারে না" এমন যুক্তিগুলি "আমি কী করছি তা সত্যিই ব্যাখ্যা করতে পারি না" বলে মনে হচ্ছে। অথবা "আমি নিজের ডিজাইনের বিষয়ে তর্ক করতে চাই না"। আমি সত্যিই ভাবি যে প্যাটার্নাইজেশন সামগ্রিক বোঝার উপকার করতে পারে এবং এটি কম প্রবীণ সহকর্মীদের মূল্যবান মতামত ভাগ করতে দেয়। তবে সম্ভবত আপনার সিনিয়র সহকর্মী ঠিক তা এড়াতে চান।

স্তরযুক্ত পদ্ধতির বেশিরভাগ এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলিতে অন্যান্য আর্কিটেকচারের তুলনায় উচ্চতর প্রমাণিত হয়েছে। বিশ্বমানের নেতৃস্থানীয় প্যাকেজগুলি এই ধারণাটির চারপাশে কাঠামোগত করা হয়েছে এবং প্রসারিততার আদেশে শিল্পকলার আর্কিটেকচারকে ছাড়িয়ে যায়। মার্টিন ফওলর তাঁর উদ্যোগ "এন্টারপ্রাইজ আর্কিটেকচারের প্যাটার্নস" সম্পর্কিত দুর্দান্ত বইয়ে এই পদ্ধতির উপস্থাপন করেছেন । উহু! আবার দুঃখিত: এটি প্রমাণিত নিদর্শন সম্পর্কে; আপনার সহকর্মীর এনআইএইচ দর্শনে কোনও সুযোগ নেই ;-)


এনআইএইচ সিনড্রোম, আকর্ষণীয়, আমি এর আগে শুনিনি। স্পষ্টতই এটি সেই সমস্যা যে বেশিরভাগ উত্তর আমেরিকার নিয়োগকর্তা তাদের কর্মচারীদের পরিচালনা কীভাবে মোকাবিলা করছেন!
বেতন

@ পেই আমি নিশ্চিত নই যে এটি উত্তর আমেরিকাতেই সীমাবদ্ধ ;-) আমরা সর্বদা কিছু সাফল্যের সাথে ইতিমধ্যে যে সমাধানগুলি ব্যবহার করেছি সেগুলির সমাধান করতে সর্বদা লোভনীয়। এটি আরামের অঞ্চল। তবে চ্যালেঞ্জিং সহকর্মীদের সাথে নতুন ধারণা এবং গঠনমূলক সংলাপের জন্য সর্বদা উন্মুক্ত থাকা উচিত। সর্বোপরি, " আপনি দ্রুত একা ভ্রমণ করেন তবে একসাথে আরও দূরে। "
ক্রিস্টোফ

16

অনেক লোকের একটি মূল অন্তর্দৃষ্টি হ'ল সফ্টওয়্যার ডিজাইনটি প্রাসঙ্গিক। এটি ব্যবসায়ের লক্ষ্যে পৌঁছানোর জন্য বিদ্যমান এবং বিভিন্ন লক্ষ্যে বিভিন্ন পদ্ধতির প্রয়োজন হতে পারে। অন্যভাবে বলতে গেলে, এমন কোনও ডিজাইন নেই যা সর্বদা সেরা, যদিও সর্বদা সেরা নকশা থাকে।

ডিজাইন নিদর্শনগুলি স্ট্যান্ডার্ড সমস্যার মান সমাধান to তবে আপনার যদি সমস্যা না হয় তবে এটি সমাধান করা প্রচেষ্টার অপচয়।

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

এটি হ'ল জলপ্রপাতে, নকশার নিদর্শনগুলি প্রয়োগ করার প্রবণতা যদি তাদের প্রয়োজন প্রত্যাশিত হয় , চটপটে, যখন তাদের আসলে প্রয়োজন হয় । ফলস্বরূপ, চটজলদি প্রকল্পগুলি প্রায়শই ডিজাইনের ধরণ প্রয়োগ করতে ঝোঁক, কারণ সমস্ত প্রত্যাশিত চাহিদা প্রকৃত নয়।


1
জন্য +1 Design patterns are standard solutions to standard problems। আমি আরও উজ্জীবিত উত্তর না দেখে কিছুটা নিরাশ হয়েছি। এটির জন্য প্রথমে আপনার সমস্যাটি যদি আপনি কোনও মানক সমস্যার সাথে মেলাচ্ছেন এবং এটি সত্যই প্রায়শই হয় তবে তা সনাক্ত করা দরকার।
ওয়ালফ্র্যাট

8

ডিজাইনের নিদর্শনগুলিকে সত্যই ডিজাইন নিদর্শন বলা হয় না কারণ তারা কী করতে হবে তা নির্ধারণ করে। ডিজাইন নিদর্শনগুলি হ'ল নকশার নিদর্শন কারণ তারা এর আগে যা করা হয়েছিল তা বর্ণনা করে । কিছু বিকাশকারী বা বিকাশকারী একটি পদ্ধতি ডিজাইন করেছিলেন যা একটি নির্দিষ্ট কাজ ভালভাবে সম্পন্ন করে এবং একই ফলাফলের সাথে একই পরিস্থিতিতে প্রয়োগ করতে সক্ষম হয়। এতটুকুই। অনেকগুলি নিদর্শনগুলির সহজাত শক্তি এবং দুর্বলতা থাকে, এবং প্রয়োগ করার জন্য উপযুক্ত প্যাটার্ন নির্ধারণ করার জন্য প্রযুক্তিগত এবং ব্যবসায়িক প্রয়োজনের মূল্যায়ন করা শিক্ষিত বিকাশকারীদের উপর নির্ভর করে।

সেই আলোকে, যদি না আপনি 100% ওয়ান-অফ কোড লেখার প্রতিশ্রুতিবদ্ধ না হন, যেখানে কোনও ব্যবহারের ক্ষেত্রে থেকে পরবর্তী সময়ে কোনও ধারণা বা প্রয়োগ বাস্তবায়িত হয় না, আপনি অবশ্যই কমপক্ষে কিছু ডিজাইনের নিদর্শন ব্যবহার করছেন। তাদের কাছে "সংগ্রহস্থল" বা "ওয়ার্কের ইউনিট" বা "এমভিসি" এর মতো চটকদার, সাধারণ নাম নাও থাকতে পারে তবে এটি তাদের "নকশার ধরণ নয়" করে তোলে না।


6

আমি সাধারণত এটির পথে ভাবতে পছন্দ করি - বলুন - জিপিএস ব্যবহার করে "ন্যাভিগেশন"। 'সেরা অনুশীলনগুলি' এবং 'নকশার ধরণগুলি' শেখার সময় - আপনি জিপিএস নেভিগেশন রুট নিতে শিখেন। তবে আপনি যখন অঞ্চলটি জানেন, আপনি প্রায়শই শিখবেন যে পাশের রাস্তাটি চালানো আপনার অতীতের সমস্যার ক্ষেত্রগুলি নিয়ে যাবে, আপনাকে সেখানে দ্রুত এবং / বা আরও ভাল করে তুলবে। এই জিনিসগুলির ক্ষেত্রে এটি একই রকম হয় - অভিজ্ঞতা আপনাকে আপনার সরঞ্জামবাক্সটি ডিকনস্ট্রাক্ট করতে এবং শর্ট-কাটগুলি নিতে সক্ষম করে।

ডিজাইনের ধরণগুলি শেখা এবং "সেরা অনুশীলনগুলি" শেখার অর্থ আপনি পিছনের ধারণা সম্পর্কে একটি ধারণা অর্জন করতে পারেন যাতে আপনি একটি নির্দিষ্ট পরিস্থিতিতে চয়ন করতে পারেন। যেহেতু বাস্তব জীবনের পরিস্থিতি প্রায়শই তাত্ত্বিক পরিস্থিতির তুলনায় আরও জটিল হয় - আপনার প্রায়শই সীমাবদ্ধতা এবং বিষয়গুলি পাঠ্যপুস্তকে পাওয়া যায় না। ক্লায়েন্ট / গ্রাহকরা তাদের পণ্য দ্রুত এবং সাধারণত সস্তা চান; আপনার লিগ্যাসি কোড দিয়ে কাজ করা প্রয়োজন; আপনার তৃতীয় পক্ষের সরঞ্জামগুলির সাথে ইন্টারঅ্যাক্ট করতে হবে যা খুব ভাল ব্ল্যাক বক্স এবং অকার্যকর হতে পারে; এবং সব ধরণের জিনিস। আপনার পরিস্থিতি সুনির্দিষ্ট - সেরা অনুশীলন এবং নিদর্শনগুলি আরও সাধারণ।

এসই এর মতো সাইটে প্রচুর লোক আপনাকে 'সেরা অনুশীলন' উত্তর এবং 'নকশার ধরণ' উত্তর দেবে তার একটি প্রধান কারণ হ'ল তারা সাধারণ এবং বিমূর্ত সমাধানগুলিতে উত্তর দিচ্ছেন এবং এর ফলে এটি কোনও ধরণের সমাধানের জন্য একটি সাধারণ ভাষা সরবরাহ করতে সহায়তা করে সমস্যা। এবং আপনাকে শেখার জন্য।

সুতরাং - না - ডিজাইন নিদর্শনগুলি চটজলদি বিকাশের পরিবেশগুলিতে বোঝা যায় না; বিকাশ তবে খুব কমই সাধারণ এবং একটি নিখুঁতভাবে পুরোপুরি ফিট করার জন্য যথেষ্ট বিমূর্ত এবং অভিজ্ঞ (বিকাশকারী) বিকাশকারী এটি জানেন।


5

ইউআই / ডাটাবেস / ডেটা স্তরটিতে একটি নতুন ক্ষেত্র যুক্ত করতে 2-3 ঘন্টা সময় লাগে, যেখানে তার কোড হিসাবে এটি 30 মিনিট সময় নেয়।

আপনি যদি কোনও নকশাকে "অনুকূলিত করতে" চান তবে আপনাকে যা বলা উচিত অনুকূল করার চেষ্টা করা উচিত to

উদাহরণস্বরূপ, একটি রেসিং সাইকেল একটি অপ্টিমাইজড যান ... এবং একটি বোয়িং 7৪7 হ'ল একটি অপ্টিমাইজড যানও ... তবে তারা প্রয়োজনের বিভিন্ন সেট জন্য অনুকূলিত।

উদাহরণস্বরূপ, "এমভিসি" প্যাটার্নের ধারণাটি এই জাতীয় জিনিসের জন্য অনুকূল করে:

  • একই মডেলের বিভিন্ন মতামত (দেখুন মডেলের চেয়ে পৃথক)
  • প্রতিটি স্তর পৃথকভাবে বিকাশ করা যেতে পারে (যেমন বিভিন্ন দল দ্বারা) এবং একীকরণের আগে পৃথকভাবে পরীক্ষা করা (ইউনিট পরীক্ষা)
  • প্রভৃতি

যদিও তার কোডটি অন্য কোনও কিছুর জন্য অনুকূল হতে পারে, উদাহরণস্বরূপ:

  • কোডের ন্যূনতম লাইন
  • এক ব্যক্তির পক্ষে পরিবর্তন করা সহজ যা সমস্ত স্তরকে প্রভাবিত করে (সত্যিকার অর্থে পৃথক স্তর না রেখে)
  • প্রভৃতি

প্যাটার্নের বিবরণটি কী ধরণের সমাধানের উদ্দেশ্যে করা হয়েছে সেই সমস্যার বর্ণনা দিয়ে শুরু হয়। যদি তিনি মনে করেন যে এটি নির্দিষ্ট প্যাটার্নটি ব্যবহার না করা "সেরা অনুশীলন", তবে (এটি একটি নির্বোধ প্যাটার্ন নয় এটি ধরে নেওয়া, এটি এমন একটি ধরণ যা কখনও কখনও দরকারী) মনে করি আমি মনে করি যে সেই নির্দিষ্ট সমস্যাটি তার নেই / যা সেই প্যাটার্নটি দাবি করে সমাধানের জন্য, এবং / অথবা সে একটি আলাদা (বৃহত্তর বা আরও জরুরি, প্রতিযোগিতামূলক) সমস্যা পেয়েছে যার পরিবর্তে তিনি অনুকূলিত করার চেষ্টা করছেন।


"সত্যই আলাদা আলাদা স্তর না রেখে" - বা, ন্যায্য হতে পারে, গ্রহণযোগ্য "ডিফল্ট আচরণ" যা স্তরগুলির মাধ্যমে প্রচার করে। উদাহরণস্বরূপ, ওয়েব-ভিত্তিক এসকিউএল অ্যাডমিন অ্যাপ্লিকেশনগুলি একটি উপস্থাপনা স্তর যা ডাটাবেস স্তর পরিবর্তিত হলে স্বয়ংক্রিয়ভাবে আপডেট হয়। এটি কেবলমাত্র, সীমিত ব্যবহার ব্যতীত, এটি ব্যবহারকারীদের কাছে আপনি যেভাবে চান তা উপস্থাপন করতে পারে না :-) একটি নতুন ক্ষেত্র যুক্ত করতে আধা ঘন্টা অবিশ্বাস্যভাবে দ্রুত বলে মনে হয়, যা প্রস্তাব দেয় যে নকশার জন্য কোনও উল্লেখযোগ্য ইউআই নেই suggest নতুন ক্ষেত্রের সাথে সংযুক্তিযুক্ত, স্তরযুক্ত বা অন্যথায়।
স্টিভ জেসোপ

4

নকশা নিদর্শন সরঞ্জাম। সরঞ্জামগুলির মতো, এগুলি ব্যবহারের দুটি উপায় রয়েছে: সঠিক উপায় এবং ভুল উপায়। উদাহরণস্বরূপ, যদি আমি তোমাকে একটা স্ক্রু ড্রাইভার এবং একটি পেরেক, দিতে এবং কাঠের দুই টুকরা একসঙ্গে যোগ দিতে চান, আপনি উচিত আমাকে একটা হাতুড়ি জন্য জিজ্ঞাসা করুন। হাতুড়ি নখের জন্য ব্যবহৃত হয়, স্ক্রু ড্রাইভারগুলি স্ক্রুগুলির জন্য ব্যবহৃত হয়।

খুব প্রায়ই, একটি নকশার প্যাটার্নটি ওয়ান ট্রু ওয়ে হিসাবে বিজ্ঞাপন দেওয়া হয়, যা নির্দিষ্ট সমস্যা দেখা দিলে প্রায়শই সত্য। জুনিয়র বিকাশকারীরা প্রায়শই বাচ্চাদের মতো হয় যখন তারা খেলতে নতুন কিছু খুঁজে পায়; তারা সেই ডিজাইনের প্যাটার্নটি সমস্ত কিছুতে প্রয়োগ করতে চায় । এবং এর সাথে অন্তর্নিহিত কোনও ভুল নেই, যতক্ষণ না তারা অবশেষে শিখবে যে প্যাটার্ন এ প্রব্লেম বিয়ের জন্য প্রযোজ্য, এবং প্যাটার্ন সি প্রব্লেম ডি-তে প্রযোজ্য যেমন আপনি নখ চালানোর জন্য কোনও স্ক্রু ড্রাইভার ব্যবহার করেন না, আপনি কোনও নির্দিষ্ট ব্যবহার করবেন না প্যাটার্ন কেবল কারণ এটি বিদ্যমান; আপনি প্যাটার্নটি ব্যবহার করেন কারণ এটি কাজের জন্য সেরা (পরিচিত) সরঞ্জাম।

নিদর্শনগুলির ফ্লিপ সাইডটি অ্যান্টি-প্যাটার্নগুলি। যে বিষয়গুলি সময় এবং বার বার খারাপ হিসাবে প্রমাণিত হয়েছে, সাধারণত সম্পাদনের সময় বা স্মৃতির ক্ষেত্রে। যাইহোক, নিদর্শন এবং অ্যান্টি-প্যাটার্ন উভয়ই বিকাশকারীদের পক্ষে ভাল হয় না যা তারা কেন বিদ্যমান তা বুঝতে পারে না । বিকাশকারীরা ভাবতে চায় যে তারা যা করছে তা নতুন এবং উদ্ভাবনী, তবে বেশিরভাগ সময় তারা তা করে না। সম্ভবত এটি আগে চিন্তা করা হয়েছিল। অভিজ্ঞতার কারণে তাদের পূর্বের লোকেরা নিদর্শনগুলি তৈরি করেছে।

অবশ্যই, জুনিয়র বিকাশকারীরা প্রায়শই পুরানো জিনিসগুলি করার নতুন উপায় নিয়ে আসে বলে মনে হয় এবং কখনও কখনও সেগুলি আরও ভাল হয়। তবে, প্রায়শই এটি ডানিং-ক্রুগার প্রভাবের ঘটনা হিসাবে শেষ হয়; বিকাশকারী একটি কার্যকরী প্রোগ্রাম করার জন্য যথেষ্ট জানেন তবে তাদের নিজস্ব সীমাবদ্ধতা বুঝতে পারে না। এটি অতীত হওয়ার একমাত্র উপায় মনে হয় অভিজ্ঞতার মধ্য দিয়ে, ইতিবাচক এবং নেতিবাচক উভয়ই। তারা নিদর্শনগুলি উপেক্ষা করে কারণ তারা নিজেদেরকে উন্নত বলে বিশ্বাস করে তবে বাস্তবে 10,000 টি বিকাশকারী একটি সুনির্দিষ্ট নকশা ব্যবহার করেছেন এবং এটি এড়িয়ে গেছে কারণ এটি আসলে খারাপ ছিল।

চটজলদি ক্লায়েন্টের চাহিদা ক্রমহ্রাসমানের সাথে দ্রুত সামঞ্জস্য করার ক্ষেত্রে "জিনিসগুলি প্রতিক্রিয়াশীলভাবে সম্পন্ন করার পক্ষপাতী" ors এটি নকশার নিদর্শনগুলির পক্ষে নয়, তাদের তুচ্ছ করে না। যদি কোনও প্যাটার্নটি দ্রুত, সবচেয়ে নির্ভরযোগ্য পদ্ধতি হয় তবে বিকাশকারী এটি ব্যবহার করা উচিত। যদি কোনও নির্দিষ্ট প্যাটার্নটি কেবল "সম্পন্ন করার" চেয়ে বেশি সময় ব্যয় করে তবে এমন কিছু ব্যবহার করা সম্ভবত যা ঠিক নয় (ধরে নেওয়া যায় যে অবশ্যই সেই কর্মক্ষমতা মারাত্মকভাবে অবনমিত হয় না ইত্যাদি)। যদি কোনও পরিচিত প্যাটার্নটি পাওয়া যায় না, তবে ক্লায়েন্টকে "না" বলার চেয়ে তাদের নিজস্ব ডিজাইনিং পছন্দ করা হয়। গ্রাহকরা, বিশেষত পরিশোধিত ক্লায়েন্টরা সাধারণত সঠিক থাকে।

যে কেউ দাবি করেন যে নিদর্শনগুলি দ্য ওয়ে, বা দাবি করেছেন যে নিদর্শনগুলি অস্তিত্বের নিষিদ্ধ, ভুল, প্যাটার্নগুলি হ'ল সরঞ্জামগুলি, নির্দিষ্ট পরিস্থিতিতে প্রয়োগ করা হতে পারে এবং পরিস্থিতিতে বিভিন্ন সাফল্যের বিভিন্ন ডিগ্রি রয়েছে। এটি সত্য, আপনি এমভিসি বা না বেছে নেওয়ার উপর নির্ভর করে না, যদি আপনি ডেটা ট্রান্সফার অবজেক্টগুলি ব্যবহার করেন বা না করেন ইত্যাদি etc. কোন বিষয়গুলি যুক্তিযুক্ত স্বল্প সময়ের ফ্রেমে কোড প্রয়োগ করছে, যা ব্যবহারকারীদের জন্য যুক্তিসঙ্গতভাবে ভাল সম্পাদন করে, এবং যুক্তিযুক্ত ত্রুটিযুক্ত যুক্তিসঙ্গত মুক্ত।

সাধারণত , নিদর্শনগুলি সুসংগত রূপের নকশাকে মঞ্জুরি দেয় এবং 100% মূল ধারণা লেখার পক্ষে সমস্ত নিদর্শন উপেক্ষা করার চেয়ে আরও ভাল সম্পাদন করবে তবে আপনি সমস্ত নিদর্শন এড়াতে পারবেন না। উদাহরণস্বরূপ, যদি y = x + 5, আপনি কি সত্যিই y = x + (5 * 3 + 15/3) / 4 লিখতে চলেছেন, কেবল x + 5 লেখার ধরণটি এড়াতে? না তুমি নও. আপনি y = x + 5 লিখতে চলেছেন এবং পরবর্তী সমস্যার দিকে এগিয়ে যাচ্ছেন।

লোকেরা প্রতিদিন নিদর্শন ব্যবহার করে এবং এটি ঠিক আছে । যে বিষয়টি সবচেয়ে বেশি গুরুত্বপূর্ণ তা কোডটি যা যৌক্তিকভাবে কার্যকর, খুব কমই ক্র্যাশ হয় এবং এটি ব্যবহারকারী-বান্ধব। এর চেয়ে গুরুত্বপূর্ণ আর কিছু নয়।


আমি মনে করি এর সাথে সতর্কতামূলক পরিস্থিতিগুলি আপনার সমস্যা এবং ডোমেন সম্পর্কে 'বর্তমান' বোঝার ভিত্তিতে আপনি একটি নতুন শ্রেণি তৈরি করতে পারেন বা পরিস্থিতিটির সাথে প্রযোজ্য এমন একটি প্যাটার্ন অনুসরণ করতে পারেন, তবে পরের দিন ক্লায়েন্ট আপনার জন্য চান তাদের জন্য কিছু ছোট দিকটিতে কাস্টমাইজেশন করুন যা অন্যান্য ক্লায়েন্টরা তাদের সংস্করণে চায় না। এমন একটি কোডবেস সংহতকরণ যা 2 ডজন ক্লায়েন্টের প্রয়োজন মেটাচ্ছে এবং অনুলিপি পাস্তা সম্পাদন করা অসম্ভব বলে মনে হচ্ছে। একটি পুরানো মেল মার্জ প্রক্রিয়াটি পুনরায় সংশোধন করার সময় আমি আজই এটিতে প্রবেশ করি।
Igneous01

2

আপনি 'নকশার ধরণগুলি এড়াতে পারবেন না', তবে আপনার সিস্টেমের কোনও দুটি অংশ একইভাবে ডিজাইনের মাধ্যমে এড়িয়ে যাওয়ার অনুমান করা ছাড়া (যা আমি প্রস্তাব করি না এবং আমি সন্দেহ করি যে আপনার সিনিয়র বিকাশকারী এটি করছেন)। তিনি সম্ভবত যা বোঝাতে চেয়েছেন তা হল 'কোনও নকশার নকশাকে মেনে চলার কারণে অন্ধভাবে ডিজাইন ব্যবহার করা এড়ানো'। আপনি যা করছেন সে সম্পর্কে চিন্তাভাবনা অবশ্যই একটি 'সেরা অনুশীলন', এবং একটি বিশ্ববিদ্যালয় পড়ানোর জন্য উপস্থিত থাকা উচিত ; দুঃখের বিষয়, এমনটি মনে হচ্ছে না।


2

নকশার নিদর্শনগুলি চতুর অনুশীলনের জন্য বিরোধী নয়। চটজলদি অনুশীলনের প্রতিরোধমূলক বিষয়টি হ'ল ডিজাইনের নিদর্শনগুলি ব্যবহারের স্বার্থে নকশা নিদর্শনগুলি ব্যবহার করা, তাজা স্নাতকদের এবং শিক্ষার্থীদের মধ্যে "আমরা কীভাবে কারখানার নিদর্শন ব্যবহার করে এই সমস্যাটি সমাধান করব" এর পংক্তিতে চিন্তা করার সাধারণ অনুশীলন।

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

আপনার সহকর্মী / বন্ধু সম্ভবত আপনার কোডটির প্রতি আপত্তি জানিয়েছিল কারণ এটি প্রতি সেড ডিজাইনের ধরণ ব্যবহার করে না, তবে এটি একটি কৃত্রিম নির্মাণ যা নির্দিষ্ট নকশার ব্যবহার দেখানোর জন্য ডিজাইন করা হয়েছে যখন অন্য ডিজাইনটি আরও ভাল হত (যদিও প্রায়শই বিষয়গত, আমি (এবং নিঃসন্দেহে আমার সাথে অনেকেই প্রচুর উদাহরণ দেখেছেন যেখানে নির্দিষ্ট নকশার প্যাটার্নটির বাধ্যতামূলক ব্যবহার কুৎসিত, রক্ষণাবেক্ষণ করা শক্ত এবং অত্যন্ত অক্ষম কোডের দিকে পরিচালিত করে)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.