একটি ক্লাসে কতগুলি অনেক ইন্টারফেস রয়েছে? [বন্ধ]


28

আমি সম্ভবত এটি কোনও কোড গন্ধ বা এমনকি কোনও এন্টি-প্যাটার্ন বিবেচনা করব যাতে একটি ক্লাস থাকে যা 23 ইন্টারফেস প্রয়োগ করে। যদি এটি সত্যিই একটি অ্যান্টি-প্যাটার্ন হয় তবে আপনি এটিকে কী বলবেন? বা এটি কেবল একক দায়িত্বের নীতি অনুসরণ করে না?


3
ঠিক আছে, এটি যেভাবেই প্রশ্নবিদ্ধ able যদি ক্লাসে 23 টি পদ্ধতি থাকে যা সকলেই একটি একক দায়িত্ব পরিবেশন করে (সমস্ত শ্রেণীর পক্ষে এতগুলি পদ্ধতির প্রয়োজন হয় না তবে এটি অসম্ভব নয় - বিশেষত যদি বেশিরভাগ ক্ষেত্রে অন্যান্য পদ্ধতির চারপাশে তিন-লাইনের সুবিধাযুক্ত র‌্যাপার থাকে) তবে আপনার কেবল খুব সূক্ষ্ম ইন্টারফেস রয়েছে; )

প্রশ্নে শ্রেণিটি এক ধরণের সত্তা এবং ইন্টারফেসগুলি বেশিরভাগ বৈশিষ্ট্যের জন্য। এর মধ্যে 113 টি রয়েছে এবং কেবলমাত্র চারটি পদ্ধতি।
জোনাস এলফস্ট্রোম

6
আমি ভেবেছিলাম স্ট্যাটিক্যালি সংকলিত ভাষায় হাঁসের টাইপিংয়ের জন্য ইন্টারফেসগুলি মূলত ব্যবহৃত হয়। সমস্যা কি? :)
ashes999

2
কেবল একটি প্রশ্ন: 113 টি সম্পত্তি কী এই সত্তার প্রতিটি উদাহরণের জন্য জনবহুল? অথবা এটি কিছু প্রকারের কিছু ভরাট দিয়ে বিভিন্ন প্রসঙ্গে "সাধারণ সত্তা" ব্যবহৃত হয়?
ডেভিড

1
আসুন একটি "শ্রেণি" গঠনের ধারণাগত বোঝার দিকে ফিরে যাই। একটি শ্রেণি একটি স্পষ্টভাবে সংজ্ঞায়িত দায়িত্ব এবং ভূমিকা সহ একক জিনিস। আপনি কি এইভাবে আপনার 23-ইন্টারফেস অবজেক্টটি সংজ্ঞায়িত করতে পারেন? আপনি কি এমন একক (অ-জয়সায়ান) বাক্য পোস্ট করতে পারেন যা আপনার বর্গের পর্যাপ্ত সংক্ষিপ্তসার করে? যদি তা হয় তবে 23 ইন্টারফেস ঠিক আছে। যদি তা না হয় তবে এটি খুব বড়, খুব জটিল।
স্টিফেন গ্রস

উত্তর:


36

রাজকীয় পরিবার: তারা বিশেষভাবে ক্রেজি কিছু করেন না তবে তাদের এক বিলিয়ন শিরোনাম রয়েছে এবং বেশিরভাগ অন্যান্য রোয়ালের সাথে এটি সম্পর্কিত related



আমি চাপ দিয়েছিsomehow
ওল্ফ

23

আমি জমা দিচ্ছি যে এই অ্যান্টি-প্যাটার্নটির নাম জ্যাক অফ অল ট্রেড বা সম্ভবত অনেকগুলি টুপি রাখা হোক।


2
সুইস আর্মি ছুরি সম্পর্কে কীভাবে?
হতাশিত

দেখে মনে হচ্ছে এই শব্দটি ইতিমধ্যে অনেকগুলি পদ্ধতির ইন্টারফেসের জন্য ব্যবহৃত হয়েছে :-) যদিও এটি এখানে অর্থবোধকও হবে।
জালান

1
@ ফ্রাস্ট্রেটড উইথফর্মস ডিজাইনার একটি সুইস আর্মি নাইফের আইভ্যালু নামের একটি ইন্টারফেস থাকার খারাপ স্বাদ কখনই না থাকতে পারে যার মধ্যে 30 টি বৈশিষ্ট্য রয়েছে যার মধ্যে 20 টি নতুন সংশোধক কীওয়ার্ডের আগে রয়েছে।
জোনাস এলফস্ট্রোম

3
অনেকগুলি টুপি জন্য +1 ... বহু-মাথাযুক্ত দেবতাকে
নিউটোপিয়ান

1
একটি সুইস আর্মি ছুরি পুনরায় ব্যবহারের একটি মডেল। অর্থাত্ একটি একক "ফলক" পদ্ধতিগুলি করতে পারে তবে এটি সম্ভবত একটি খারাপ উপমা!
জেমস অ্যান্ডারসন

17

যদি আমাকে এটির নাম দিতে হয় তবে আমার মনে হয় আমি এটিকে হাইড্রাকে ডাকব :

হাইড্রার

গ্রীক পৌরাণিক কাহিনী অনুসারে, লার্নিয়ান হাইড্রা (গ্রীক: Λερναία Ὕδρα) ছিলেন প্রাচীন নামহীন সর্পের মতো ছাথোনিক জন্তুর প্রাণী, সরীসৃপের বৈশিষ্ট্যযুক্ত (যার নামটি প্রকাশিত হয়েছিল) যেগুলি অনেকগুলি মাথা ধারণ করেছিলেন - কবিরা দানি-চিত্রকরদের চেয়ে বেশি মাথা উল্লেখ করেছিলেন পেইন্ট, এবং প্রতিটি মাথা কাটা জন্য এটি আরও দুটি বৃদ্ধি পেয়েছিল - এবং বিষাক্ত শ্বাস এতটা মারাত্মক এমনকি এমনকি তার ট্র্যাকগুলি মারাত্মক ছিল।

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

একটি "হাইড্রা" এর কারণে আসন্ন আযাবের প্রথম লক্ষণটি হ'ল এক তাত্পর্যপূর্ণ পরীক্ষা-নিরীক্ষা ছাড়াই একটি ইন্টারফেসের ঘন ঘন castালাই এবং প্রায়শই এমন লক্ষ্য হিসাবে বোঝানো হয় যা এইভাবে বোঝায় না:

public void CreateWidget(IPartLocator locator, int widgetTypeId)
{
    var partsNeeded = locator.GetPartsForWidget(widgetTypeId);
    return ((IAssembler)locator).BuildWidget(partsNeeded);
}

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

সৌভাগ্য আপনি যে কোনও 23 টি ইন্টারফেস প্রয়োগ করে এমন কোনও রক্ষণাবেক্ষণ করছেন। প্রক্রিয়াটিতে আপনার জামানত ক্ষতি হওয়ার সম্ভাবনা খুব কম নয় to


16

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

সলিডে, যখন এই বস্তুর স্রষ্টা স্পষ্টতই ইন্টারফেস বিভাজন নীতি অনুসরণ করার চেষ্টা করেছেন, তারা পূর্বের নিয়ম লঙ্ঘন করেছে; একক দায়িত্বের নীতি এটি "সলিড" এর একটি কারণ রয়েছে; ডিজাইন সম্পর্কে চিন্তাভাবনা করার সময় এস সর্বদা প্রথম আসে এবং অন্যান্য সমস্ত বিধি অনুসরণ করে।

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


আমি নিশ্চিত নই যে এটি গড অবজেক্ট অ্যান্টি-প্যাটার্ন, কারণ anyশ্বর কোনও ইন্টারফেস দ্বারা সীমাবদ্ধ নন। এতগুলি ইন্টারফেস দ্বারা সীমাবদ্ধ থাকা God'sশ্বরের সর্বশক্তি হ্রাস করতে পারে। ;) সম্ভবত এটি একটি চিমেরা অবজেক্ট?
হতাশিত

শ্বরের অনেক মুখ আছে এবং অনেক লোকের কাছে এটি অনেক জিনিস হতে পারে। সম্মিলিত ইন্টারফেসের কার্যকারিতা যদি বস্তুকে "সর্বজ্ঞ" করে তোলে তবে এটি সত্যই Godশ্বরকে বাধ্য করছে না, তাই না?
কিথস

1
ইন্টারফেসগুলি তৈরি করে না থাকলে তা তাদের পরিবর্তন করে। তারপরে interfaceশ্বরের ইন্টারফেস পরিবর্তনের সাথে সামঞ্জস্য করতে পুনরায় প্রয়োগ করা যেতে পারে।
হতাশ

3
এটি ব্যাথা করে যে আপনি ভাবেন যে এটিই আমিই ক্লাস তৈরি করেছি।
জোনাস এলফস্ট্রোম

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

8

23 কেবল একটি সংখ্যা! খুব সম্ভবত দৃশ্যে এটি অ্যালার্মের পক্ষে যথেষ্ট। তবে, যদি আমরা জিজ্ঞাসা করি, কোনও ট্যাগটি "অ্যান্টি-প্যাটার্ন" হিসাবে ডাকার আগে এটি সবচেয়ে বেশি পদ্ধতি / ইন্টারফেস কী? এটি 5 বা 10 বা 25? আপনি বুঝতে পেরেছেন যে সংখ্যাটি আসলেই কোনও উত্তর নয় কারণ যদি 10 ভাল হয় তবে 11 টিও হতে পারে - এবং এর পরে কোনও পূর্ণসংখ্যা হবে।

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

অন্যদিকে, অপেক্ষাকৃত ছোট আকারের কোড যা একটি কয়েক ঘন্টার মধ্যে এবং বাইরে পড়ার আশা করতে পারে- এটি এখনও জটিল হতে পারে। কোডটি (অযৌক্তিকভাবে) জটিল বলে আমি মনে করি।

অবজেক্ট-ওরিয়েন্টেড ডিজাইনের জ্ঞানের প্রতিটি টুকরো এখানে "জটিল" সংজ্ঞায়িত করার জন্য রাখা যেতে পারে তবে "এতগুলি পদ্ধতি" যখন জটিলতার ইঙ্গিত দেয় তখন আমি এখানে তা সীমাবদ্ধ রাখি।

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

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

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

  4. (ইন) API এর ধারাবাহিকতা যখন আমি book_a_ticket () করি - আমি একটি টিকিট বুক করি! এটি কতটা চেক এবং প্রক্রিয়াগুলি ঘটায় তা নির্বিশেষে এটি খুব সাধারণ। সময় প্রবাহ যখন এটিকে প্রভাবিত করে তখন এটি জটিল হয়। সাধারণত কেউ "অনুসন্ধান" এবং সম্ভাব্য উপলভ্য / অনুপলব্ধ স্থিতির অনুমতি দেয়, তারপরে পিছনে-এন-কমানোর জন্য আপনি টিকিটের অভ্যন্তরে কিছু প্রসঙ্গ পয়েন্টার সংরক্ষণ করতে শুরু করেন এবং তারপরে টিকিট বুক করার জন্য উল্লেখ করুন । অনুসন্ধান কেবলমাত্র কার্যকারিতা নয় - এই জাতীয় "পার্শ্ব কার্যকারিতা" এর পরে জিনিসগুলি আরও খারাপ হয়ে যায়। প্রক্রিয়াতে বই_এ_টিকেট () এর অর্থ হ'ল বই_ত_ টিকেট ()! এবং এটি অভাবনীয় জটিল হতে পারে।

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

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

তবে আপনি খুব বড় ক্লাস জুড়ে আসতে পারেন যা খুব সুন্দরভাবে সামঞ্জস্যপূর্ণ, তাদের 30 টি পদ্ধতি রয়েছে - এবং এখনও খুব পরিষ্কার LE তারা ভাল হতে পারে।


প্রশ্নগুলির শ্রেণিতে 23 টি ইন্টারফেস রয়েছে এবং এর মধ্যে সব মিলিয়ে 113 টি পাবলিক প্রোপার্টি এবং চারটি পদ্ধতি রয়েছে। তাদের মধ্যে কেবলমাত্র কিছু পাঠযোগ্য। সি # এর স্বতঃ-প্রয়োগকৃত বৈশিষ্ট্য রয়েছে, এ কারণেই আমি পদ্ধতি এবং বৈশিষ্ট্যগুলির মধ্যে পার্থক্য করি msdn.microsoft.com/en-us/library/bb384054.aspx
জোনাস এলফস্ট্রাম

7

ক্লাসগুলির ঠিক সঠিক সংখ্যক ইন্টারফেস থাকতে হবে; বেশিও না, কমও না.

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

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


আমি অনুভব করলাম এই প্রশ্নটি বেশ ভাষা অজ্ঞানময়। আসল কোডটি সি # তে রয়েছে।
জোনাস এলফস্ট্রোম

আমি কোনও সি # করিনি, তবে এটি ইন্টারফেস উত্তরাধিকারের অনুরূপ ফর্মকে সমর্থন করে বলে মনে হচ্ছে।
blrfl

হ্যাঁ, একটি ইন্টারফেস অন্যান্য ইন্টারফেসগুলি "উত্তরাধিকারী" করতে পারে এবং এ জাতীয়।
জোনাস এলফস্ট্রোম

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

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

1

এটি মনে হয় যেমন তাদের প্রতিটি সম্পত্তির জন্য "গেটর" / "সেটার" জুটি রয়েছে, যেমনটি একটি সাধারণ "শিম" এর জন্য সাধারণ এবং ইন্টারফেসে এই সমস্ত পদ্ধতি প্রচার করে। সুতরাং কিভাবে এটি " শিম " বলা সম্পর্কে । বা আরও রাবেলেসিয়ান "ফ্ল্যাটুলেন্স" সুপরিচিত পরে অনেকগুলি মটরশুটি প্রভাবিত করে।


এটি সি # তে রয়েছে এবং এটিতে স্বয়ংক্রিয়-প্রয়োগকৃত বৈশিষ্ট্য রয়েছে। এই 23 টি ইন্টারফেস, সব মিলিয়ে 113 টির মতো বৈশিষ্ট্য রয়েছে।
জোনাস এলফস্ট্রোম

1

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

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

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

আধুনিক ভাষায় আমরা একটি ভিন্ন প্রবণতা দেখি যা মূল দিকগুলির বাইরে এই দিকগুলি পৃথক করতে এবং তাদের নিজস্ব শ্রেণিতে স্থাপন করতে সহায়তা করে। তারপরে বাইরের শ্রেণি বা দিকটি টীকাগুলি (গুণাবলী) ব্যবহার করে লক্ষ্য শ্রেণীর সাথে যুক্ত হয়। প্রায়শই বাইরের দিকের ক্লাসগুলি কম বেশি জেনেরিক করা সম্ভব হয় is

গুণাবলীর ব্যবহার (টিকা) প্রতিবিম্বের বিষয়। একটি অপূর্ণতা গৌণ (প্রাথমিক) কর্মক্ষমতা হ্রাস। একটি (প্রায়শই সংবেদনশীল) হ্রাসটি হ'ল এনক্যাপসুলেশনের মতো নীতিগুলি শিথিল করা দরকার।

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

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

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


0

"অনেকগুলি" বিষয়গত: প্রোগ্রামিং শৈলী? কর্মক্ষমতা? মান অনুসারে? প্রিসিডেন্ট? আরাম / আত্মবিশ্বাসের কি সরল?

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


0

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

(সুতরাং সামগ্রিকভাবে, এন + যে কোনও সংখ্যক উত্তরাধিকারসূত্রে ইন্টারফেস রয়েছে, যেখানে এন <= 7.)

যদি আপনার শ্রেণি অনেক বেশি ইন্টারফেস প্রয়োগ করে তবে এটি সম্ভবত godশ্বর-শ্রেণি

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