উত্তরাধিকারের জন্য ডিজাইনিং কীভাবে অতিরিক্ত ব্যয় হতে পারে? [বন্ধ]


12

তাই আমি একটি থেকে উত্তরাধিকারী করতে চেয়েছিলেন sealed classcsharp এবং পুড়িয়ে ফেলা হয়। যদি আপনার উত্সটিতে অ্যাক্সেস না থাকে তবে এটি আনসিল করার কোনও উপায় নেই।

তারপরে এটি আমাকে " sealedএমনকি কেন বিদ্যমান?" ভেবে পেয়েছে । 4 মাস আগে. আমি এ সম্পর্কে অনেক কিছুই পড়ার পরেও এটি অনুধাবন করতে পারি না, যেমন:

আমি তখন থেকে সব হজম করার চেষ্টা করেছি, তবে এটি আমার পক্ষে খুব বেশি। শেষ পর্যন্ত, গতকাল আমি আবার চেষ্টা করেছিলাম। আমি আবার সেগুলির উপরে আবার স্ক্যান করেছি এবং আরও কয়েকটি:

অবশেষে, প্রচুর চিন্তাভাবনার পরে, আমি নতুন শিরোনামের ভিত্তিতে মূল প্রশ্নটি ভারীভাবে সম্পাদনা করার সিদ্ধান্ত নিয়েছি ।

পুরাতন প্রশ্ন খুবই বিস্তৃত এবং বিষয়ী ছিল। এটি মূলত জিজ্ঞাসা করছিল:

  1. পুরানো শিরোনামে: সিল ব্যবহার করার একটি ভাল কারণ
  2. দেহে: সিল করা ক্লাসটি কীভাবে সঠিকভাবে সংশোধন করবেন? উত্তরাধিকার ভুলে যাবেন? রচনা ব্যবহার করবেন?

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

আমার অনুমান এখানে আমার প্রশ্নটি (এবং বাস্তবে সর্বদা ছিল) মিঃ মিন্ডর আমাকে একটি আড্ডায় পরামর্শ করেছিলেন : উত্তরাধিকারের জন্য ডিজাইনিং কীভাবে অতিরিক্ত ব্যয়ের কারণ হতে পারে?


5
প্রশ্নটি বেশ আক্রমণাত্মকভাবে উচ্চারিত হয়েছে এবং বেদনার মতো শোনাচ্ছে। আপনি যদি প্রাসঙ্গিক এবং উদ্দেশ্যমূলক উত্তর চান তবে আপনার এটির উচ্চারণ করা উচিত।
ইওফোরিক

11
দেখুন ফ্রেমওয়ার্ক ক্লাসগুলির এতগুলি সিল কেন? এরিক লিপার্ট দ্বারা। তিনি ক্লাস সিল করার জন্য বেশ কয়েকটি ভাল কারণ সরবরাহ করেন।
রবার্ট হার্ভে

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

4
@ কাওস তিনি পারেন, বা আপনি যে নিবন্ধটি যুক্ত করেছেন সেগুলি পড়তে পারেন যা এটি বিশদভাবে ব্যাখ্যা করেছে। তিনি তার মন্তব্যে এই নিবন্ধটি সংক্ষেপে বলছিলেন।
Servy

7
দুঃখিত, তবে আমি এখানে রেন্টিং করছি না। আপনার প্রশ্নের উত্তর খুব সহজ: আপনি উত্তরাধিকার সমর্থন করতে চান না যখন একটি ক্লাস সীল। এটাই.
রবার্ট হার্ভে

উত্তর:


27

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

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

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

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

দোষ কে পাবে?

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

ব্যবহার sealedসম্পূর্ণরূপে উপরের দৃশ্যপটটি সরিয়ে দেয় না, তবে এটি সাহায্য করে।


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

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

2
@ কাওয়াস বেশিরভাগ বিকাশকারীদের দ্বারা লিখিত বিস্তৃত ক্লাসগুলি কখনই উত্তরাধিকার সূত্রে আবশ্যক হবে না এবং উত্তরাধিকার সমর্থন করার জন্য লিখিত হয় না। এটি কোডটি পাঠকদের / ব্যবহারকারীদের কাছে টাইপ করে দ্রুত এবং কার্যকরভাবে জানানো যেতে পারে sealed। যদি এটি প্রকৃতপক্ষে ডিফল্ট বিকল্প হয় তবে এর অর্থ হ'ল যদি কেউ কোনও প্রকার থেকে উত্তরাধিকার সূত্রে আসে তবে তারা জানতে পারে যে এটি সমর্থন করার জন্য এটি নির্মিত।
Servy

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

1
এছাড়াও নিরাপত্তা এটি ব্যবহার করতে একটি কারণ! একটি ফাইল অ্যাক্সেস করার চেষ্টা করে একটি স্যান্ডবক্সযুক্ত অ্যাপ্লিকেশন বিবেচনা করুন। স্যান্ডবক্সটি ফাইলের নাম-স্ট্রিংগুলি পরীক্ষা করতে পারে, তবে কোনও আক্রমণকারী যদি আপনাকে একটি পরিবর্তনীয় প্রেরণ করতে পারে Stringএবং তারা সুরক্ষা-পরীক্ষার পরে আই / ও-এর আগে পরিবর্তন করতে পারে তবে কী হবে? আমি বিশ্বাস করি যে জাভা পরিস্থিতিটি কেন জাভা Stringচিহ্নিত করা হয়েছে final(অনুরূপ sealed) এবং আমি একই যুক্তিটি কিছু সি # সিদ্ধান্তকে আটকাই।
ডারিয়ান

23

sealedশ্রেণীর লেখক এটি উত্তরাধিকার সূত্রে ডিজাইন করেননি তা বোঝাতে ব্যবহৃত হয় কিছুই কম, বেশি কিছু না।

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

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

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

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

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


ঠিক আছে ... দুঃখিত যদি আমি আবার আক্রমণাত্মক মনে করি তবে আমি কেবল এখানে পরিষ্কার এবং দৃser় হতে চাই ... আপনি কেবল tl;drএখানে লিখতে চাইলে 2 টির মধ্যে আপনি কেবল কী লিখেছেন তা আমি কেবল বুঝতে পারি। এটি হয় "না, কোনও একক ভাল কারণ নেই" , বা "আমার মনে হয় এর কোনও ভাল কারণ নেই, তবে আমি এটিও জানি না।" । আমার কাছে "কোনও নির্দিষ্ট উত্তর নেই" হয় সেগুলির মধ্যে একটি।
ক্রেগক্স

6
sealedশ্রেণীর লেখক এটি উত্তরাধিকার সূত্রে ডিজাইন করেননি তা বোঝাতে ব্যবহৃত হয়। এটি আপনার একক ভাল কারণ।
রবার্ট হার্ভে

এটি আপনাকে লাইট এবং প্রয়োগ না করে সাইকেল দেওয়ার মতো একটি ভাল কারণ, কোনওভাবে আপনি লাইট যুক্ত করতে পারবেন না।
ক্রেগোক্স

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

1
এছাড়াও নিরাপত্তা এটি ব্যবহার করতে একটি কারণ! একটি ফাইল অ্যাক্সেস করার চেষ্টা করে একটি স্যান্ডবক্সযুক্ত অ্যাপ্লিকেশন বিবেচনা করুন। স্যান্ডবক্সটি ফাইলের নাম-স্ট্রিংগুলি পরীক্ষা করতে পারে, তবে কোনও আক্রমণকারী যদি আপনাকে একটি পরিবর্তনীয় প্রেরণ করতে পারে Stringএবং তারা সুরক্ষা-পরীক্ষার পরে আই / ও-এর আগে পরিবর্তন করতে পারে তবে কী হবে? আমি বিশ্বাস করি যে জাভা পরিস্থিতিটি কেন জাভা Stringচিহ্নিত করা হয়েছে final(অনুরূপ sealed) এবং আমি একই যুক্তিটি কিছু সি # সিদ্ধান্তকে আটকাই।
ডারিয়ান

4

যখন কোনও শ্রেণি সিল করা হয় তখন কোডটি সেই ধরণের ব্যবহার করে তারা ঠিক কী কাজ করছে তা জানতে দেয়।

এখন সি # stringতে sealed, আপনি এটির উত্তরাধিকারী হতে পারবেন না, তবে আসুন আমরা এক সেকেন্ডের জন্য ধরে নিই যে এটি ছিল না। যদি আপনি তা করেন তবে কেউ এইরকম ক্লাস লিখতে পারে:

public class EvilString// : String
{
    public override string ToString()
    {
        throw new Exception("I'm mean");
    }
    public override bool Equals(object obj)
    {
        return false;
    }
    public override int GetHashCode()
    {
        return 0;
    }
}

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

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


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

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

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

2
@ কাওয়াস stringপ্রকারটি সংকলক কোড নয়। এটি ভাষা কোডের একটি অংশ। পুরোপুরি ভিন্ন. যাই হোক না কেন, আমি কেবল একটি উদাহরণ বেছে নিয়েছি। আপনি পুরো বিসিএলে সিলড ক্লাসটি বেছে নিতে পারেন এবং এটি উদাহরণ হিসাবে ব্যবহার করতে পারেন।
পরিবেশন করুন

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

3

সিল ব্যবহার করার কোনও ভাল কারণ আছে কি?

Enh? না প্রায়ই. আমি শুধু সিল ব্যবহার করা হবে যখন আমি একটি অপরিবর্তনীয় প্রকার (অথবা অন্য কোনো সীমাবদ্ধতা) যে আছে সত্যিই সত্যিই অপরিবর্তনীয় থাকা প্রয়োজন এবং আমি সিস্টেমের মধ্যে সূক্ষ্ম catastropic বাগ উপস্থাপক ছাড়া প্রয়োজন furfill সামনে এই আমানত উত্তরাধিকার করতে পারবে না।

ধরা যাক সিলযুক্ত ব্যবহার করার কোনও উপযুক্ত কারণ আছে এবং আমাদের এটিকে সমস্ত কিছুর জন্য ডিফল্ট হিসাবে ব্যবহার করা উচিত, আমরা উত্তরাধিকার দিয়ে কী করব?

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

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


আমার কাছে, এটি এবং "ক্লায়েন্টদের উত্তরাধিকারের সমর্থন না জানাতে" যে রবার্ট সবিস্তারে উত্তর দিতে চান না ... সম্ভবত আপনি যেসব ক্ষেত্রে ব্যবহার করেন সেগুলি সম্পর্কে আরও বিস্তারিত বর্ণনা করতে পারেন sealed, দয়া করে?
ক্রেগোক্স

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

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

3

প্রথমত, মাইক্রোসফ্ট কেন তাদের ক্লাস সিল করে তা নিয়ে আপনার এরিক লিপার্টের পোস্টটি পড়া উচিত।

http://blogs.msdn.com/b/ericlippert/archive/2004/01/22/61803.aspx

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

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


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

তৃতীয় পয়েন্টটি উত্তরাধিকারের তুলনায় রচনাটিকে উত্সাহ দেয় না, এটি উত্তোলনকে পুরোপুরি বিকল্প হিসাবে সরিয়ে দেয়, এমনকি যদি এটি সর্বোত্তম পছন্দ ছিল।
মাইকেল শ

এটি নির্ভর করে যদি আপনি কোডবেস নিয়ন্ত্রণ করেন বা না করেন। আপনি যদি ক্লাসগুলি সিল করেন তবে আপনি প্রয়োজনের পরে সর্বদা সেগুলি আনতে পারেন।
স্টিফেন

2

আমি মনে করি এই প্রশ্নের উদ্দেশ্যমূলক উত্তর নেই এবং এটি আপনার দৃষ্টিভঙ্গির উপর নির্ভর করে।

একদিকে, কিছু লোক সবকিছু "খোলা" চান এবং সবকিছু সঠিকভাবে কাজ করছে তা নিশ্চিত করার বোঝা সেই ব্যক্তির উপর যারা ক্লাসটি প্রসারিত করে। ডিফল্টরূপে ক্লাসগুলি উত্তরাধিকারের জন্য উন্মুক্ত। এবং কেন জাভা পদ্ধতিগুলি সমস্ত ডিফল্টরূপে ভার্চুয়াল।

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


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

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

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

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

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

-2

সি # তে সিলযুক্ত সমস্যাটি এটি বরং চূড়ান্ত। সি # বাণিজ্যিক বিকাশের 7 বছরের মধ্যে, আমি এটি ব্যবহার করতে দেখেছি কেবলমাত্র জায়গাটি হ'ল মাইক্রোসফ্ট। নেট ক্লাস যেখানে আমার মনে হয় সামঞ্জস্যপূর্ণ আচরণ বাস্তবায়নের জন্য আমার একটি কাঠামো শ্রেণি প্রসারিত করার বৈধ কারণ ছিল এবং ক্লাসটি সিল করা হয়েছিল, তাই আমি পারিনি ।

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

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

আমি দেখতে পাচ্ছি যে এখনও পর্যন্ত তিনটি যুক্তি রয়েছে যা সিল করে দেওয়া যথাযথ প্রমাণ দিয়েছে far

  1. আর্গুমেন্ট 1 হ'ল এটি যখন কোনও ক্লাস থেকে উত্তরাধিকার সূত্রে উত্তীর্ণ হয় এবং তারপরে সত্যিকারভাবে ইন্টার্নালগুলি সঠিকভাবে না বুঝে that শ্রেণীর অভ্যন্তরে প্রবেশাধিকার বাড়িয়ে তোলে তখন এটি বাগের উত্সটিকে সরিয়ে দেয়।

  2. আর্গুমেন্ট 2 হ'ল যদি আপনি মাইক্রোসফ্ট ক্লাস প্রসারিত করেন এবং মাইক্রোসফ্ট যদি সেই ক্লাসে একটি বাগ ফিক্স প্রয়োগ করে তবে আপনার এক্সটেনশন সেই বাগের উপর নির্ভর করে তবে আপনার কোডটি এখন নষ্ট হয়ে গেছে, মাইক্রোসফ্ট্ট দোষ পেয়েছে এবং সিল করে দেয় যা প্রতিরোধ করে

  3. আর্গুমেন্ট 3 হ'ল ক্লাসের বিকাশকারী হিসাবে, ক্লাসের আমার ডিজাইনের অংশ হিসাবে আপনাকে এটি বাড়ানোর অনুমতি দেবে কিনা তা আমার পছন্দ।

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

আমি বুঝতে পারি যে আর্গ 2 এর জন্য আসল ভিত্তিটি কোথা থেকে এসেছে। বিশেষত যখন মাইক্রোসফ্ট উইন্ডোজ এনপি-র তুলনায় উইন্ডোজ এক্সপি-র সাধারণ স্থায়িত্বের উন্নতি ঘটিয়েছে, তবে উইন্ডোজ এনপি-র তুলনায় উইন্ডোজ এক্সপি-র সাধারণ স্থায়িত্বের উন্নতি ঘটায়, উইন 32 এপিআই কলগুলিতে অতিরিক্ত ওএস চেক রাখে Windows মাইক্রোসফ্ট এই চেকগুলি বলার জন্য 'বিধিগুলি' প্রয়োগ করে এটি সমাধান করেছে, অ্যাপ্লিকেশন এক্স যখন এই নিয়মটি ভঙ্গ করে, এটিকে একটি জ্ঞাত ত্রুটি

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

যুক্তি 3 কেবলমাত্র যুক্তি যা তার ন্যায্যতা প্রমাণ করতে কোন পদার্থ আছে। তবে এটি এখনও দুর্বল। এটি কেবল কোড পুনরায় ব্যবহারের শস্যের বিরুদ্ধে যায়।


2
/ আমি মাইক্রোসফ্টকে একটি ইমেল প্রেরণ করে, দয়া করে আপনি আমার জন্য দশম শ্রেণি আনসিল করতে পারেন এবং .NET এর নতুন প্রকাশের জন্য পাঠাতে পারেন। বিনীত, .... যেমনটা আমি বলেছিলাম, বাণিজ্যিক বিকাশের ক্ষেত্রে আমি একমাত্র সিলড ক্লাস দেখেছি, এটি উন্মুক্ত করা সম্ভব হয়নি।
মাইকেল শ '

6
It is impossible to write a class thinking about every possible way it could be used- ঠিক এ কারণেই অনেকগুলি ফ্রেমওয়ার্ক ক্লাস সিল করা হয়েছে ... এটি ক্লাসকে প্রসারিত করার সম্ভাব্য প্রতিটি উপায় সম্পর্কে চিন্তাভাবনা করার প্রয়োজনকে সরিয়ে দেয়।
রবার্ট হার্ভে

5
আপনি যদি এটি সরিয়ে ফেলতে পারতেন তবে এটি সিল করার তেমন কোনও বক্তব্য থাকবে না, আছে কি?
রবার্ট হার্ভে

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

2
@ কাওস: আপনি কেবল কঠিন হচ্ছেন।
রবার্ট হার্ভে

-7

আমি কেবল sealedক্লাসে কীওয়ার্ড ব্যবহার করি যেখানে কেবল স্থির পদ্ধতি থাকে।


9
তাহলে কেন কেবল তার staticপরিবর্তে ক্লাসটি চিহ্নিত করবেন না?
Servy

@ সার্ভি ... ভাল পয়েন্ট
ভ্লাদিমির কোকজানিক

-8

আমার প্রশ্নের দ্বারা স্পষ্ট যে, আমি এখানে কোন বিশেষজ্ঞ। তবে আমি sealedঅস্তিত্বের কোনও কারণ দেখতে পাচ্ছি না ।

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

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

হতে পারে কোনও কীওয়ার্ড থাকতে পারে stable, যাতে লোকেরা জানতে পারে যে এটির উত্তরাধিকার সূত্রে প্রাপ্তি এটি আরও নিরাপদ।


2
"সমস্যা সমাধান হয়েছে" - ঠিক আছে।
রবার্ট হার্ভে

@ রবার্ট হার্ভে এটি ঠিক করা হয়নি, যেমন পরের অনুচ্ছেদে ঠিক ব্যাখ্যা করা হয়েছে।
ক্রেগক্স

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

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

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