জাভাতে কীভাবে সর্বোত্তম ব্যবহারের জন্য?

এই নিবন্ধটি আপনাকে জাভাতে একটি সাধারণ তবুও গুরুত্বপূর্ণ ধারণাটির সাথে পরিচয় করিয়ে দিয়েছে এবং এটি একটি প্রোগ্রাম্যাটিক প্রদর্শনের মাধ্যমে অনুসরণ করে follow

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



সুতরাং আসুন শুরু করা যাক,



আপনার প্রোগ্রামে অনুমান ঠিক আছে কিনা তা পরীক্ষা করতে চান? ঠিক আছে, আপনি জাভাতে দৃser় বিবৃতি দিয়ে এটি করতে পারেন। আপনি দৃ key়শব্দ কীওয়ার্ডটি এমন দৃ as়তা তৈরি করতে ব্যবহার করতে পারেন যা আপনাকে কোনও প্রোগ্রামে আপনার অনুমানগুলি পরীক্ষা করতে দেয়।

জাভা শিম কি?

আসুন একটি উদাহরণ নেওয়া যাক। একটি সংস্থার এবিসি-র একজন কর্মচারীর বয়স ageণাত্মক সংখ্যা থাকতে পারে না। কোনও কর্মীর বয়স কোনও নেতিবাচক সংখ্যা নয় তা নিশ্চিত করার জন্য আপনি এর জন্য একটি দৃser়তা ব্যবহার করতে পারেন।



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

সিনট্যাক্স

উত্সাহ বিবৃতিতে দুটি রূপ রয়েছে:



assertexpression1

এখানে,

এক্সপ্রেশন 1 হ'ল বুলিয়ান এক্সপ্রেশন।

এক্সপ্রেশন 1: এক্সপ্রেশন 2

এই ফর্মটিতে, এক্সপ্রেশন 1 একটি বুলিয়ান এক্সপ্রেশন এবং এক্সপ্রেশন 2 এর একটি মান রয়েছে যা এক্সপ্রেশন 1 এর সাথে তুলনা করা হবে।

এখন, আপনি জিজ্ঞাসা করতে পারেন - আপনি আপনার প্রোগ্রামগুলির জন্য কোন ফর্মটি চয়ন করেন? আপনি যখন দ্বিতীয় প্রোগ্রামটি ব্যবহার করতে পারেন যখন আপনার প্রোগ্রামটিতে অতিরিক্ত তথ্য থাকে যা প্রোগ্রামে ত্রুটি বা ব্যর্থতা নির্ণয় করতে পারে।

জাভা ১.৪ এর আগে, আপনি আপনার ভেরিয়েবল, পদ্ধতি, ফাংশন এবং আরও অনেক কিছুর নাম লিখতে 'assert' শব্দটি ব্যবহার করতে পারেন। জেভিএম এর নতুন সংস্করণগুলির সাথে, এটি সম্ভাব্যভাবে একটি নামকরণ সংঘাতের কারণ হতে পারে - সুতরাং আপনার এই সত্যটি সম্পর্কে একটু সচেতন হওয়া দরকার।

জাভাতে অন্তর্ভুক্তির উপর এই নিবন্ধটি নিয়ে চলছে

আপনার দৃ As়তা কেন দরকার?

আপনি ভাবতে পারেন যে জাভাতে একটি দৃser় বিবৃতি অপ্রয়োজনীয় হতে পারে। আপনি এটি ছোট প্রোগ্রামগুলির জন্য অপ্রয়োজনীয় মনে করতে পারেন। কিন্তু, যখন জটিল যুক্তি সহ বড় প্রোগ্রামগুলির কথা আসে, তখন এই দৃ as় বিবৃতি কার্যকর হয়।

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

ডিবাগিং এবং পরীক্ষার পাশাপাশি, দৃ statement় বিবৃতিটি আপনার কোডকে আরও পঠনযোগ্য করে তোলে। আসুন একটি উদাহরণ নেওয়া যাক:

নীচের কোডটি এমন কিছু শর্ত যাচাই করতে সহায়তা করবে যা অ্যাপ্লিকেশনটিকে সঠিকভাবে কাজ করা থেকে বিরত করতে পারে।

সংযোগ সংযোগ = getConnication () যদি (সংযোগ == নাল) new নতুন রানটাইম এক্সেকশন ('সংযোগ নাল হয়') নিক্ষেপ করুন}

একটি একক দৃ statement় বিবৃতি দিয়ে, আপনি নীচে দেখানো হিসাবে 'যদি এবং নিক্ষেপ করুন' বিবৃতিটি মূলত শেষ করতে পারেন:

সংযোগ সংযোগ = getConnication () সংযুক্তি সংযোগ! = নাল

জাভাতে অন্তর্ভুক্তির উপর এই নিবন্ধটি নিয়ে চলছে

জাভা দৃser়তা সক্ষম ও অক্ষম করা

জাভা assertions assert কীওয়ার্ড ব্যবহার করে, আপনার প্যাকেজ বা লাইব্রেরি আমদানি করতে হবে না। পূর্বে উল্লিখিত হিসাবে, আপনি ভেরিয়েবল, পদ্ধতি এবং ফাংশনগুলির জন্য আসর্ট কীওয়ার্ডটি ব্যবহার করতে পারেন। পশ্চাদপটে সামঞ্জস্যের জন্য, এবং সম্ভাব্য নামকরণের সংঘর্ষ এড়াতে, জেভিএম ডিফল্টরূপে দৃ valid়তা প্রমাণীকরণ অক্ষম করে। জোর স্পষ্টভাবে সক্ষম করা আবশ্যক। আপনি এটি একটি কমান্ড লাইন আর্গুমেন্ট (-ableablesersertions) দ্বারা বা এর শর্টহ্যান্ড (-ea) ব্যবহার করে করতে পারেন।

আসুন কয়েকটি উদাহরণ বিবেচনা করুন:

java -ea com.baeldung.assertion.Ssertion

উপরোক্ত ক্লাসগুলির জন্য দৃ .়তা সক্ষম করে।

java -ea: com.baeldung.assertion… com.baeldung.assertion.Ssertion

আপনি বিশেষ প্যাকেজ এবং ক্লাসের জন্য দৃser়তা সক্ষম করতে পারেন। এটি উপরের উদাহরণে দেখানো হয়েছে যেখানে আমরা com.baeldung.assertion প্যাকেজের ক্লাসগুলির জন্য দৃ enabled়তা সক্ষম করেছি।

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

জাভাতে অন্তর্ভুক্তির উপর এই নিবন্ধটি নিয়ে চলছে

জাভা সংস্থানগুলি কীভাবে ব্যবহার করবেন?

আপনার প্রোগ্রামে দৃ two় প্রয়োগগুলি প্রয়োগ করার জন্য দুটি জিনিস রয়েছে - আসর্ট কীওয়ার্ড এবং একটি বুলিয়ান শর্ত। কোড স্নিপেট সহ একটি উদাহরণ নেওয়া যাক:

সর্বজনীন শূন্য সেটআপ () {সংযোগ সংযোগ = getConnication () সংযোগ সংযোগ! = নাল}

আপনি উপরের দৃ as়তার জন্য একটি স্ট্রিং নীচে প্রদর্শিত হিসাবে ব্যবহার করতে পারেন:

সর্বজনীন শূন্য সেটআপ () {সংযোগ সংযোগ = getConnication () সংযুক্তি সংযোগ! = নাল: 'সংযোগটি বাতিল হয়'}

উপরের কোড স্নিপেটে, যদি একটি AssertionError থাকে তবে ত্রুটিটি তৈরি করতে স্ট্রিংটি ব্যবহৃত হবে।

উপরের দুটি ক্ষেত্রেই, বাহ্যিক উত্সের সংযোগটি একটি নন-মান প্রদান করে কিনা তা কোডটি পরীক্ষা করে। মানটি যদি নাল হয়, তবে JVM স্বয়ংক্রিয়ভাবে একটি AssertionError নিক্ষেপ করবে।

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

থ্রেড 'মেইন' java.lang.AssertionError মধ্যে ব্যতিক্রম: সংযোগ শূন্য
com.baeldung.assertion.Aserser.setup এ (দৃ As়.জভা 15: 15)
com.baeldung.assertion.Assertion.main এ (দৃser়.জভা ১০:১০)

আসুন একটি সহজ উদাহরণ বিবেচনা করুন:

আমদানি java.util.Sanner শ্রেণি AssertionEample {পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং আরগস []) {স্ক্যানার স্ক্যানার = নতুন স্ক্যানার (System.in) System.out.print ('আপনার বয়স লিখুন') অন্তর্ভুক্ত মান = স্ক্যানার.নেক্সট আইন্ট () মান বলুন> = 18: 'বৈধ নয়' সিস্টেম.আউট.প্রিন্টলন ('মান হল' + মান)}

এখন আপনার হাতে কোডটি রয়েছে, এখন এটি চালানোর সময়। যেহেতু, দাবিগুলি ডিফল্টরূপে অক্ষম থাকে, আপনাকে সেগুলি সক্ষম করতে হবে।

আপনি নিম্নলিখিতগুলির সাথে উপরের কোডটি সংকলন করতে পারেন: জাভাক অ্যাসেসরেশনএক্সামেল.জভা

এরপরে আপনি নিম্নলিখিতটি ব্যবহার করে এটি চালাতে পারেন: জাভা -ea AssertionExample

দ্য আউটপুট উপরের কোডের জন্য:

আপনার বয়স 11 লিখুন

থ্রেডে 'মেইন' জাভা.এলং.এর সারণীকরণ ব্যতীত: বৈধ নয়

আপনি দেখতে পাচ্ছেন, বয়সের জন্য আমরা 11 টি মান দিয়েছি। প্রোগ্রামটি এটিকে বৈধ মান হিসাবে বিবেচনা করে না। সুতরাং, আপনি একটি AssertionError দেখতে পাবেন।

জাভাতে অন্তর্ভুক্তির উপর এই নিবন্ধটি নিয়ে চলছে

দৃ Use়তা কোথায় ব্যবহার করবেন না?

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

আসুন এগুলিতে আরও অন্বেষণ করুন:

পাবলিক পদ্ধতিতে তর্ক পরীক্ষা করার জন্য

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

জাভাতে অন্তর্ভুক্তির উপর এই নিবন্ধটি নিয়ে চলছে

অপারেশনের জন্য সংস্থান ব্যবহার করে

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

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

নামগুলি দৃsert় করুন rem

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

বুলিয়ান নাল রিমোভড = নামস.ম্রেভ (নাল)
নালস সরানো

উপরের কোড স্নিপেট নাল মান সরিয়ে ফেলবে, এমনকি যদি দৃser়তা অক্ষম করা ছিল।

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

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।