অনুরূপ বৈশিষ্ট্যগুলির জন্য বিভিন্ন নিদর্শন ব্যবহার করা


10

আমি কোনও প্রকল্পের একমাত্র বিকাশকারী, যেকোন সফ্টওয়্যার প্রকল্পের মতো, ভবিষ্যতে অন্য কারও দ্বারা গ্রহণ করা যেতে পারে।

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

তারপরে এটি বৈশিষ্ট্য বি বাস্তবায়নের সময় এটি এ এর ​​অনুরূপ, তবে এবার আমি প্যাটার্ন ওয়াইয়ের সাথে এই খেলার সুযোগটি নিতে চাই। একই বৈশিষ্ট্যগুলির জন্য বিভিন্ন নিদর্শন, এক্স এবং ওয়াই।

তবে বিভিন্ন নিদর্শন ব্যবহারের সত্যিকারের কারণ নেই, বৈশিষ্ট্যটি এআই নির্মাণের সময় বি বৈশিষ্ট্যের জন্য একই প্যাটার্নটি ব্যবহার করার মতো দক্ষ ছিল না except

মনে রাখবেন যে এই প্রশ্নটি প্রদত্ত সমস্যার জন্য সঠিক প্যাটার্নটি বেছে নেওয়ার বিষয়ে নয় ; এটি একই ধরণের সমস্যাগুলি সমাধান করার জন্য কোড বেসে প্রায় দু'টি প্যাটার্ন সহ-বিদ্যমান, এটি রিফ্যাক্টরকে পর্যাপ্ত সময় দেওয়ার কারণে হ্রাস করা যেতে পারে।

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

উত্তর:


7

যদি প্যাটার্ন এক্স এবং ওয়াই একই সমস্যাটি সমাধান করে এবং উভয়ই বস্তুনিষ্ঠভাবে ভাল হয় না, তবে আপনার উচিত একটি সম্পর্কে সিদ্ধান্ত নেওয়া এবং এটি বদ্ধ হওয়া। যদি এটি সম্ভব হয় তবে আপনার একই সমস্যাটি একইভাবে ধারাবাহিকভাবে সমাধান করার চেষ্টা করা উচিত।

আপনি খুব বেশি উদ্বেগ করছেন না , বরং এটি একটি গুরুতর কোড গন্ধ যা আপনার অবশ্যই হ্যান্ডেল এবং পরিষ্কার করা উচিত।

একটি কোডবেসে একই সমস্যার বিভিন্ন সমাধান পাওয়ার জন্য ডাউনসাইডস:

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

2

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

অবশেষে, এর মতো কোড বেজ বজায় রাখার প্রধান অসুবিধা হ'ল যুক্ত, তবে অপ্রয়োজনীয়, জটিলতা। আপনি নির্বিঘ্নে সব মূল্যে বিনাবিহীন জটিলতা এড়াতে চান!


আমি বরং এটি কোনও ধরণের টুডু লিস্টে বা কমপক্ষে কোডের একটি নোট ছাড়াও দেখতে চাই।
জেফও

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

এটা একটা ভাল দিক. ভাগ করে নেওয়া, সহযোগিতা, যোগাযোগ এবং অন্যান্য মজাদার জিনিসগুলি অন্তর্ভুক্ত করার জন্য এটি সরল টডো তালিকার চেয়ে বেশি কিছু হওয়া উচিত;
JeffO

1

কোডবেসে খেলবেন না। প্রোটোটাইপগুলি লিখুন যে আপনি অন্য (গুলি) এর চেয়ে এক প্যাটার্ন / ডিজাইনের সুবিধা এবং অসুবিধাগুলি খুঁজে পেতে পারেন।

এটি সক্রিয় হতে পারে যে স্বজ্ঞাত অনুভূতি যা হ্রাস করতে পারে তা আসলে 2 টি ভিন্ন ধরণের থাকার চেয়ে জটিল হতে পারে।

প্রোটোটাইপের জন্য তৈরি কোডের বেশিরভাগ অংশ ছুঁড়ে ফেলার প্রত্যাশা করুন।


1

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

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

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


1

না, আপনি একক কোড বেসে একাধিক নিদর্শন ব্যবহার করতে পারেন।

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

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