কোড পুনরায় ব্যবহারের পদগুলিতে কি বস্তুগুলি বিতরণ করা হয়েছে?


17

আমি প্রায়শই শুনেছি যে কোড পুনঃব্যবহারের ক্ষেত্রে অবজেক্টগুলি বিতরণ করেনি। তুমি কি একমত? আপনি যদি বিশ্বাস করেন যে তারা নেই, তবে কেন নয়?


4
আমি কাউকে এমন বলতে কখনও শুনিনি ...
TheLQ

2
@ আমি বিশ্বাস করি না যে আমি আসলেই কাউকে এটি বলতে শুনেছি , তবে আমি এটি পড়েছি।
জর্জ মেরিয়ান

পুনরায় ব্যবহারযোগ্যতা ওওপির একমাত্র সুবিধা নয়।
কেউ নেই

2
"কোডটি পুনরায় ব্যবহারের পদগুলিতে কি বস্তুগুলি বিতরণ করা হয়েছে?" -> কেবল যদি আপনি দিনের আগে থেকে ওওপি বিক্রয়কর্মীদের বিশ্বাস করেন (তবে কি ষাটের
দশকটি

উত্তর:


18

না, অগত্যা নয়।

অবজেক্টস আরও ভাল শব্দার্থক বিতরণ করে, কোড / কার্যকারিতা এবং সম্ভবত ব্যবহারের সহজলভ্য সংগঠন।

ভাল ডিজাইন করা লাইব্রেরিগুলি কোড পুনরায় ব্যবহারের প্রতিশ্রুতি দেয়, প্রতি সেজে অবজেক্টগুলি নয়।


হ্যাঁ ঠিক. তবে কি লাইব্রেরি ডিজাইনারগুলিকে তাদের লাইব্রেরিগুলি পুনরায় ব্যবহার করা সহজতর করার জন্য বিকল্প সরবরাহ করে বস্তুগুলি সহায়তা করেছে? আমি তর্ক করবে তারা আছে, সেইজন্য এবং বস্তু আছে উন্নত পুনঃব্যবহারের বিতরণ।
জুলে

@ জুলস আমিও কেবল বিতর্ক করার জন্য বিতর্ক করতে পছন্দ করি। আমি যুক্তি দিয়ে বলব না যে জিনিসগুলি লাইব্রেরি ডিজাইনিং সহজ করে নি। আমি যুক্তি দিচ্ছি যে আপনার সরঞ্জামগুলির যথাযথ ব্যবহার হ'ল যা সঠিক ফলাফলের দিকে নিয়ে যায়।
জর্জ মেরিয়ান

7

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

প্রশ্নের আরও কিছুটা প্রত্যক্ষ উত্তর দেওয়ার জন্য, নিজেকে পুনরাবৃত্তি এড়ানোর জন্য বেশ ভাল সরঞ্জামগুলির একটি সংগ্রহ রয়েছে: উত্তরাধিকার, বৈশিষ্ট্য, প্রতিনিধি, উচ্চতর অর্ডার ফাংশন ইত্যাদি those এর মধ্যে লোকেরা সামগ্রিকভাবে ওওর সাথে উত্তরাধিকারকে বিভ্রান্ত করে and আপনি যদি আমাকে জিজ্ঞাসা করেন তবে তারা কিছুটা অতিরিক্ত ব্যবহার করার ঝোঁকও রাখে। সম্ভবত সেখান থেকেই কিছু "OO sucks" ভাইব এসেছে: উত্তরাধিকার আটকে আছে যেখানে এটির কোনও প্রাকৃতিক অধিকার নেই :)


কোড পুনরায় ব্যবহার হ'ল লক্ষ্য হিসাবে লক্ষ্য করা যায়, যখন আপনি কোডের মান ত্যাগ করতে পারবেন
কেসবাশ

1
কোড পুনরায় ব্যবহার করা নিজের পক্ষে লক্ষ্য নয়। পুনরুদ্ধার সংযোগের জন্য আরেকটি শব্দ। যেমন, আপনার অবশ্যই পুনঃব্যবহারের যত্ন সহকারে যেতে হবে। মনে হয় অনেক বিকাশকারী এটি ভুলে যান। তারা ডিক্লোলড সিস্টেম চায় তবে ঘুরে দাঁড়ায় এবং যে কোনও জায়গায় বিদ্যমান ক্লাস ব্যবহার করার চেষ্টা করে।
অ্যান্ডি

5

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

ওও হ'ল একটি ভাল অনেকগুলি সমস্যার জন্য বিমূর্ততা, তবে '80s-'90 এর হাইপ থেকে সাবধান থাকুন: আপনি যখন ঘুমাবেন তখন এটি আপনার ব্যবসার মৌলিক সমস্যাগুলির চেয়ে বেশি ঝাঁকুনির সমাধান করে না it


5

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

আপনি কোথায় শুনেছেন যে ওও পুনঃব্যবহারে বিতরণ করে না? আর যুক্তি কী ছিল? সম্ভবত তাদের বস্তুর নকশা তাদের সেই পরিস্থিতিতে বাধ্য করেছিল ...


4
বিভিন্ন নিবন্ধ। এবং ব্যক্তিগত অভিজ্ঞতা থেকে, কোনও বস্তুকে পুনরায় ব্যবহারযোগ্য করে তোলা মোটেই সহজ নয়
কেসব্যাশ

3

কিছু প্রোগ্রামার কোনও ভাষা এবং শৈলীতে কপি এবং পেস্ট করবে।

সত্যিই ভাল প্রোগ্রামাররা প্রায় কোনও ভাষায় সর্বাধিক অনুলিপি এবং আটকানো যায়।

আমি OO প্যাটার্নগুলি পুনরায় ব্যবহারকে উত্সাহিত করে find আমি জাভা কোডটি দেখেছি যা একটি নন-ওও স্টাইলে লেখা হয়েছিল (যেখানে ক্রেপি ওআরএমের কারণে কোডটি থেকে ডেটা পৃথক করা হয়েছিল) এবং পুনরায় ব্যবহার সত্যই দু: খজনক ছিল - তবে ওওতে একই প্রোগ্রামাররা ডিজাইনে আরও ভাল কাজ করেছিলেন ( এবং পুনরায় ব্যবহার করুন))

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

পুনশ্চ. আমি জানি লোকেরা পূর্ববর্তী অনুচ্ছেদে সমস্যা হবে, তাই আমি কিছুটা ব্যাখ্যা করব।

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

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

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


2

কোনও সিঁড়িওয়ালা বা অন্যান্য ফিটনেস সরঞ্জাম ওজন হ্রাস ডেলিভারি করতে পারে তার চেয়ে অবজেক্টগুলির কোড পুনরায় ব্যবহারের আর সরবরাহ করার ক্ষমতা নেই। বিকাশকারীদের সরঞ্জামগুলি সঠিকভাবে ব্যবহার করতে উত্সাহিত করতে হবে।

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


2

হ্যাঁ

ওওপি আপনাকে কোডটি পুনরায় ব্যবহার করার আরও উপায় দেয়

না

সিলভার বুলেট নেই

এটা নির্ভর করে

আপনি এতে কী রেখেছিলেন এবং এর বদলে আপনি কী প্রত্যাশা করেছিলেন!


1

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

আমি যুক্তি দিয়ে বলব যে ওওপি-র মূল সুবিধাটি পুনরায় ব্যবহারের পরিবর্তে সামঞ্জস্যতা এবং পরিবর্তনশীলতা, তবে এটি অন্য প্রশ্ন।


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

2
@ কেসবেস +1 তবে আমি বলব যে বস্তুকে পুনঃব্যবহারযোগ্য করা মানে পরিস্থিতি (বস্তু )কে অতিরঞ্জিত করা।
জর্জ মেরিয়ান

সবকিছু পুনরায় ব্যবহারযোগ্য হতে চলেছে না। বেশিরভাগ জিনিস না। তবে লো সংযুক্তি, তথ্য গোপন করা ইত্যাদি হ'ল পুনরায় ব্যবহারের পূর্বশর্ত এবং এটি প্রচার করে অবজেক্ট।
ফিশটোস্টারে

2
@ ফিশটোস্টার: আপনি পাশাপাশি বলতে পারেন যে আপনার গাড়ি চলাচল করা কাজ করার জন্য একটি পূর্বশর্ত এবং একটি প্রবণতা ড্রাইভওয়ে সেইটিকে উত্সাহ দেয়। এটি প্রযুক্তিগতভাবে সত্য, তবে প্রান্তের মামলার বাইরে কোনও পার্থক্য তৈরি করার সম্ভাবনা নেই: আপনার যদি প্রয়োজন হয় এবং পুনরায় ব্যবহার করতে চান তবে আপনি এটি পাবেন, ওও বা না; যদি আপনি তা না করেন, তবে পূর্বশর্তগুলি থাকলে এটি দুর্ঘটনাক্রমে ঘটে না।
শোগ 9

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

1

অবজেক্টস কোড রি-মামলা সক্ষম করে তবে এর জন্য এটি সবচেয়ে কৌশল নয়। আমি মনে করি কোড পুনরায় ব্যবহারটি উত্তরাধিকার, পলিমারফিজম, ওভারলোডিং এবং টেম্পলেটগুলির মতো অবজেক্ট সম্পর্কিত কৌশলগুলির মাধ্যমে প্রচারিত হয়।


1

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


0

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

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