NotImplementedException এর ব্যবহার


15

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


6
আপনার কাছে এই ধরনের ব্যতিক্রমগুলি ব্যবহার করার ক্ষয়ক্ষতি কী হবে?
এসআরকেএক্স 21

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

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

1
@ ডেভিডথর্নলি, প্রশ্নটি মূলত সি # হিসাবে ট্যাগ করা ছিল, তাই আমি ট্যাগটি সংযোজন করলাম।
সুইভ

@ এসভিক: ভেবেছিলেন এটি সম্ভবত সি # হবে। ট্যাগ যুক্ত করার জন্য ধন্যবাদ।
ডেভিড থর্নলে

উত্তর:


34

আমি বিশ্বাস করি NotImplementedExceptionআসলে একটি ভাল অনুশীলন।

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

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

প্রকাশ সংস্করণটির জন্য, এটি আমার মতে আরও বেশি গুরুত্বপূর্ণ, কারণ বেশিরভাগ ক্ষেত্রে আপনি কোনও প্রোগ্রাম দৃশ্যত সঠিকভাবে কাজ করার চেয়ে ভুল ফলাফল তৈরি করার চেয়ে ক্রাশকে পছন্দ করবেন।


6
আপনি যদি পুনঃভাগটি ব্যবহার করেন তবে এটি টোডো NotImplementedExceptionমন্তব্যের মতো একইভাবে দেখায় । আমি মনে করি এটি একটি দুর্দান্ত বৈশিষ্ট্য।
সুইভ

1
কিছু ভাল টিডিডি অনুশীলনে ফেলুন এবং আপনি বিজয়ী পেয়েছেন
LRE

7

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

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


এটি ডিবাগ এবং রিলিজের ক্ষেত্রে আপনি আলাদা আচরণ চান এবং এটি দৃ always়তার সাথে সর্বদা কাটবে না। আমি বিশ্বাস করি। নেট কোড চুক্তিগুলি প্রকাশে বন্ধ করা যেতে পারে।
কাজ

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

3

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

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


1

আমি মনে করি এটি ভাল অনুশীলন। বিকল্পটি একটি অবৈধ মান বা রাষ্ট্রের প্রচার করছে, যা পরীক্ষা এবং উত্পাদন কোড উভয়কেই প্রভাবিত করবে।


1
হোল্ড করুন .... আপনার মানে, আপনি কোথায় কাজ করছেন, নটইম্পল নিক্ষেপ করে এমন কোড কিউএর সমস্ত পথে তৈরি করবে? এমনকি প্রযোজনেও?
স্টিভেন এভার্স 21

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

1

আমি সর্বদা ব্যবহার করি NotImplementedException- এটি সর্বোপরি, এর জন্যই।

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

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


0

এটি কোন ধরণের প্রকল্প? কাজ নাকি বাসায়? বাড়িতে, আপনি যা চান তা করুন - যা ভাল মনে করিয়ে দেয় যে আপনি যা কাজ করছেন তা শেষ করতে হবে।

কর্মক্ষেত্রে, এটি লেখা শেষ করুন।

আমি এমন পরিস্থিতি দেখতে পাচ্ছি না যেখানে আমি চেকইন কোড করব যা অন্যান্য ডিভ, কিউএ বা বিল্ডকে ভেঙে ফেলতে পারে / করতে পারে।


ভাল উভয়, আমি বাড়িতে খুব ভাল অনুশীলন মেনে চলা চেষ্টা।
টম স্কুয়ার্স

0

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

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