ঠিক আছে, এটি একটি উন্মুক্ত প্রশ্ন এবং আমার দুটি দিক রয়েছে যা আমি স্পর্শ করতে চাই: কখন যুক্তি যুক্ত করতে হবে এবং কীভাবে ত্রুটি বার্তা লিখতে হয় to
উদ্দেশ্য
কোনও শিক্ষানবিশকে এটি ব্যাখ্যা করার জন্য - জোর দেওয়া বিবৃতিগুলি যা ত্রুটি বাড়াতে পারে তবে আপনি সেগুলি ধরবেন না won't এবং এগুলি সাধারণত উত্থাপিত করা উচিত নয়, তবে বাস্তবে তারা কখনও কখনও উত্থাপিত হয়। এবং এটি একটি গুরুতর পরিস্থিতি, যা কোডটি পুনরুদ্ধার করতে পারে না, যাকে আমরা 'মারাত্মক ত্রুটি' বলে থাকি।
এরপরে, এটি 'ডিবাগিং উদ্দেশ্যগুলির' জন্য, যা সঠিক হলেও খুব আপত্তিজনক বলে মনে হয়। আমি 'ঘোষণাকারী আক্রমণকারীদের পছন্দ করি, যা কখনই লঙ্ঘন করা উচিত নয়' ফর্মুলেশনকে আরও ভাল করে তোলে, যদিও এটি বিভিন্ন প্রাথমিকের উপর আলাদাভাবে কাজ করে ... কিছু 'কেবল এটি পেয়ে যায়', এবং অন্যরা হয় এর জন্য কোনও ব্যবহার খুঁজে পায় না, বা সাধারণ ব্যতিক্রমগুলি প্রতিস্থাপন করে, এমনকি এটির সাথে প্রবাহ নিয়ন্ত্রণ করুন।
শৈলী
পাইথনে, assert
একটি বিবৃতি, কোনও ফাংশন নয়! (মনে রাখবেন assert(False, 'is true')
না উত্থাপিত।
কখন এবং কীভাবে errorচ্ছিক 'ত্রুটি বার্তা' লিখবেন?
এই acually ইউনিট টেস্টিং পরিকাঠামোর দ্বারা যাতে প্রায়ই অনেক ডেডিকেটেড পদ্ধতি আছে (গবেষকেরা করতে প্রযোজ্য assertTrue(condition)
, assertFalse(condition), assertEqual(actual, expected)
ইত্যাদি)। তারা প্রায়শই দৃ as়ভাবে মন্তব্য করার একটি উপায়ও সরবরাহ করে।
নিক্ষেপ কোডে আপনি ত্রুটি বার্তা ছাড়াই করতে পারেন do
কিছু ক্ষেত্রে, এই দাবিতে যুক্ত করার মতো কিছুই নেই:
ডিফ ডাম্প (কিছু): দৃsert়তা বিহীন (কিছু, ডাম্পেবল) # ...
তবে এগুলি বাদে, একটি বার্তা অন্যান্য প্রোগ্রামারদের সাথে যোগাযোগের জন্য দরকারী (যা কখনও কখনও আপনার কোডের ইন্টারেক্টিভ ব্যবহারকারী হয়, যেমন আইপিথন / জুপিটার ইত্যাদি)।
তাদের তথ্য দিন, কেবল অভ্যন্তরীণ বাস্তবায়নের বিশদটি ফাঁস করবেন না।
পরিবর্তে:
assert meaningless_identifier <= MAGIC_NUMBER_XXX, 'meaningless_identifier is greater than MAGIC_NUMBER_XXX!!!'
লিখুন:
assert meaningless_identifier > MAGIC_NUMBER_XXX, 'reactor temperature above critical threshold'
বা এমনকি এমনকি:
assert meaningless_identifier > MAGIC_NUMBER_XXX, f'reactor temperature({meaningless_identifier }) above critical threshold ({MAGIC_NUMBER_XXX})'
আমি জানি, আমি জানি - এটি কোনও স্থির দৃ as়তার জন্য কেস নয়, তবে আমি বার্তার তথ্যগত মানটির দিকে ইঙ্গিত করতে চাই।
নেতিবাচক বা ইতিবাচক বার্তা?
এটি বিতর্কিত হতে পারে তবে এ জাতীয় জিনিসগুলি পড়তে আমার কষ্ট দেয়:
assert a == b, 'a is not equal to b'
এগুলি প্রত্যেকের পাশেই লেখা দুটি পরস্পরবিরোধী জিনিস। সুতরাং যখনই আমার কোডবেজে প্রভাব রয়েছে, আমি 'আবশ্যক' এবং 'উচিত' এর মতো অতিরিক্ত ক্রিয়া ব্যবহার করে এবং আমরা কী চাই না তা না বলে আমরা কী চাই তা নির্দিষ্ট করার জন্য চাপ দিই।
একটি == খ, 'একটি অবশ্যই বি এর সমান হতে হবে'
তারপরে, AssertionError: a must be equal to b
পাওয়াটাও পঠনযোগ্য এবং বিবৃতিটি কোডটিকে যৌক্তিক মনে হচ্ছে। এছাড়াও, আপনি ট্রেসব্যাক না পড়ে এটি থেকে কিছু পেতে পারেন (যা কখনও কখনও উপলভ্যও হতে পারে না)।