পুনরায় ব্যবহারযোগ্যতা কি ভাল ডিজাইনের সমার্থক শব্দ?


10

পুনরায় ব্যবহারযোগ্যতা ভাল সফ্টওয়্যার ডিজাইনের একটি বৈশিষ্ট্য ।

পুনরায় ব্যবহারযোগ্যতা কি ভাল সফ্টওয়্যার ডিজাইনের জন্য একটি গ্রহণযোগ্য গ্লস ("অর্থের সংক্ষিপ্ত স্বরলিপি")? কেন?


আমি যুক্তি দেব যে নমনীয়তা আরও গুরুত্বপূর্ণ। অন্তর্নিহিত আর্কিটেকচার থাকা যা বাস্তবের সাথে সামঞ্জস্য করার চেষ্টা করে যে সম্ভবত কিছু পরিবর্তন হবে বা পরে যুক্ত হবে এটি আমার মতে মূল বিষয়। পুনঃব্যাবিলিটি প্রায় সেই সময়ে বিনা মূল্যে আসে।
পেমদাস

আপনার নমনীয়তার ব্যবহার হ'ল পুনরায় ব্যবহারযোগ্যতার মতো।
ম্যাথু রোডাটাস

- "পুনর্ব্যাবহার্যোগ্যতা সম্ভাবনা সোর্স কোড একটি সেগমেন্ট আবার সামান্য অথবা কোন সংশোধন সহ নতুন বৈশিষ্ট্য যোগ করার জন্য ব্যবহার করা যেতে পারে" en.wikipedia.org/wiki/Reusability
ম্যাথু Rodatus

আমি অভিভূত যে উত্তর সংখ্যাগরিষ্ঠ নিচে বলছেন কোন । এটি এখন কয়েক বছর আগে ভাল ছিল (ভাল ... 5-10 বছর), যখন পুনর্ব্যবহারযোগ্যতা সমস্ত ক্রোধকে অত্যন্ত পছন্দসই কিছু ছিল।
মার্টিন উইকম্যান

@ মার্টিন উইকম্যান পুনঃব্যবহারযোগ্যতা ভাল তবে এটি নিখরচায় নয়।
কালেব

উত্তর:


13

না।

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

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

আমি একটি ভিন্ন "গ্লস" ব্যবহার করব: টেস্টিবিলিটি।

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

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

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


ভাল উত্তর. আমার যে প্রশ্নটি করা উচিত ছিল আপনি তার উত্তর দিয়েছিলেন: "ভাল সফ্টওয়্যার ডিজাইনের জন্য ভাল গ্লস কী?"
ম্যাথু রোডাটাস

+1: বিশেষত "পুনরায় ব্যবহারযোগ্যতা মূলত একটি বিভ্রম" for
ক্রমি

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

5

না।

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

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


স্বয়ংক্রিয় পরীক্ষার কী হবে? ইউনিট কি পুনরায় ব্যবহারের ফর্ম পরীক্ষা করে না?
ম্যাথু রোডাটাস

@ ম্যাথিউ-রোদাতাস: ইউনিট পরীক্ষাগুলি আপনার সফ্টওয়্যার বিতরণযোগ্য অংশ। পুনরায় ব্যবহার বলতে সাধারণত সফটওয়্যারটির অন্য কোনও অংশে কোড পুনরায় ব্যবহার করতে বোঝায় ।
বুটিলি

ভাল যুক্তি. আমি অনুমান করি যে আমি একটি অনটোলজিকাল অর্থে "পুনরায় ব্যবহারযোগ্যতা" ব্যবহার করছি যা বিভ্রান্তিকর। : কিন্তু, দেখ, কিভাবে পুনর্ব্যাবহার্যোগ্যতা বৈশিষ্ট্য এছাড়াও testable কোডের বৈশিষ্ট্য en.wikipedia.org/wiki/Reusability
ম্যাথু Rodatus

1
@ ম্যাথেজো-রডাটাস: পুনরায় ব্যবহারযোগ্যতা নয়, "এই লন্ড্রি বৈশিষ্ট্যের তালিকা রয়েছে।" আপনি যদি সেভাবে পুনরায় ব্যবহারযোগ্যতা পেতে চেষ্টা করেন তবে আপনি কঠোরভাবে ব্যর্থ হবেন। আমাকে এই বিশ্বাস।
btilly

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

4

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

একটি ভাল সফ্টওয়্যার ডিজাইন অবশ্যই পুনঃব্যবহারযোগ্য হতে হবে, কমপক্ষে কয়েকটি মূল অংশে, আমি মনে করি যে খুব কম লোকেরা সোর্স কোডটির প্রকৃত পুনঃব্যবহার করে, কারণ এটি একটি সিস্টেমের মূল নকশা করা বিভিন্ন জটিল ক্ষেত্রে পুনরায় ব্যবহারযোগ্য হওয়ার জন্য অত্যন্ত জটিল due (এবং আমি অভিজ্ঞতার বাইরে এই বলছি)

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

আশা করি আমি আমার ব্যাখ্যাগুলি খুব বেশি গণ্ডগোল করিনি


এ কারণেই আমি "গ্লস" বলেছিলাম (যার দ্বারা আমি বোঝাতে চাইছি যে, কার্যতঃ পুনঃব্যবহারযোগ্যতা সবচেয়ে বেশি ক্যাপচার করে তবে আমরা ভাল ডিজাইনের মাধ্যমে যা বোঝায় তার সবগুলিই নয়)।
ম্যাথু রোডাস

আমার বক্তব্যটি হ'ল আপনার ভাল ডিজাইনের জন্য পুনঃব্যবহারযোগ্যতা প্রয়োজন , তবে প্রচুর "পুনরায় ব্যবহারযোগ্য" কোডটি ডিওএস করার অর্থ এই নয় যে আপনার একটি ভাল নকশা রয়েছে তাই আমি এখনও একটি গ্লস হিসাবে না
ডেভিড কনডে

এটা বোধগম্য. আমি নিশ্চিত যে আমি সম্মত নই, তবে একটি সুচিন্তিত উত্তরের জন্য +1।
ম্যাথু রোডাটাস

2

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

এই মৌলিক নকশা নীতি স্টিকিং কোড পরীক্ষা সহজ করে তোলে এবং পুনরায় ব্যবহার করার জন্য সহজ।

ভাল ডিজাইন == ভাল ডিজাইন, পুনঃব্যবহারযোগ্যতা একটি উপ-পণ্য।


1

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

পুনরায় ব্যবহারযোগ্য নকশা যার দ্বিগুণ খরচ হয় এবং / অথবা গ্রাহকের যা প্রয়োজন তার চেয়ে দ্বিগুণ সময় লাগে গ্রাহকের দৃষ্টিকোণ থেকে ভাল নকশা নয়, বিশেষ করে যদি গ্রাহকের পুনরায় ব্যবহারযোগ্যতার প্রয়োজন হয় না।

অনেকগুলি অনুরূপ বৈশিষ্ট্য রয়েছে যা প্রায়শই অন্তর্নিহিত নকশার লক্ষ্য হিসাবে বিবেচিত হয় কারণ এগুলি স্পষ্টতই ভাল বলে মনে হয়:

  • ব্যয় হ্রাস করা

  • উন্নয়নের সময় হ্রাস করা হচ্ছে

  • জটিলতা হ্রাস

  • নির্ভরযোগ্যতা সর্বাধিকতর

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

শিরোনাম প্রশ্নটি পেতে, তারপরে: না , পুনঃব্যবহারযোগ্যতা ভাল ডিজাইনের সমার্থক নয়। পুনরায় ব্যবহারযোগ্যতা কোনও নির্দিষ্ট ভাল ডিজাইনের একটি দরকারী উপাদান হতে পারে, তবে কেবল যখন এটির প্রয়োজন হয়।


0

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

উদাহরণস্বরূপ, আপনি যদি এমন কোনও ডেটা পূর্ণ ফাইল লিখছেন যা আপনার সংস্থার পক্ষে অনন্য এবং সেই ডেটা অন্য কোথাও একবার আমদানি করা হয়েছে তবে কেন এটি পুনরায় ব্যবহারযোগ্য করে তোলার বিরক্ত করবেন?

এটি বলেছে, আপনার কাঠামোর যদি ইতিমধ্যে একটি না থাকে তবে কোনও ফাইলে লেখার কোডটি পুনরায় ব্যবহারযোগ্য হতে পারে। এটি ভাল নকশা হবে।


যদি কোনও কিছু আবার ব্যবহার না করা হয় তবে আপনি কীভাবে নিশ্চিত হন?
ম্যাথু রোডাটাস

1
@ ম্যাথেজ - এটি একজন ভাল ডিজাইনারের আমার সংজ্ঞা হবে: যে কেউ সাধারণত এই প্রশ্নটি সঠিকভাবে পান
পিডিআর

0

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

কোর স্টাফ

  • ওয়েবফর্ম টেম্পলেটগুলি যা কোনও পৃষ্ঠা সহজেই এবং ধারাবাহিকভাবে যুক্ত হতে দেয় (বা কোনও ধরণের UI এর জন্য)
  • ভিউমোডেল বেস শ্রেণীর মতো নকশার প্যাটার্ন সহায়কগুলি যা আমার সমস্ত এমভিভিএম অ্যাপ্লিকেশনগুলিতে অন্তর্ভুক্ত থাকবে

ইউটিলিটি স্টাফ

  • ইমেল ক্লাস যা একটি এসএমটিপি বার্তা প্রেরণ করে (এটি সর্বদা ব্যবহার করুন)
  • একটি জিআইএস দূরত্বের ক্যালকুলেটর শ্রেণি (আমাদের অ্যাপগুলির একগুচ্ছ ব্যবহৃত হয়)

বেশিরভাগ অ্যাপের .০-৮০% গ্রহণকারী সিআরইউডি স্টাফের জন্য, আমি পুনরায় ব্যবহারযোগ্যতা মোটেই একটি মূল্যবান মেট্রিক বলে মনে করি না।

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