null
মান এবং খালি স্ট্রিংগুলি সন্ধান করে আমি এই স্নিপেটগুলির প্রচুর ব্যবহার করেছি ।
আমি প্রাপ্ত আর্গুমেন্টগুলি পরীক্ষা করার জন্য আমার পদ্ধতিগুলির প্রথম কোড হিসাবে "যুক্তি পরীক্ষা" -তন্ত্রগুলি ব্যবহার করি।
testNullArgument
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
আপনার কোম্পানির বা প্রকল্পের মান অনুসারে আপনি ব্যতিক্রম বার্তাটি পরিবর্তন করতে চাইতে পারেন। তবে, আমি এমন কিছু বার্তা দেওয়ার প্রস্তাব দিচ্ছি যাতে আপত্তিকর যুক্তির নাম অন্তর্ভুক্ত থাকে। অন্যথায় আপনার পদ্ধতির কলকারীকে কী ভুল হয়েছে তা বোঝার জন্য কোডটি সন্ধান করতে হবে। (একটিNullPointerException
কোনও বার্তা ছাড়াই একটি মোটামুটি অযৌক্তিক বার্তা "নাল" দিয়ে একটি ব্যতিক্রম উত্পন্ন করে))
testNullOrEmptyStringArgument
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
${varName} = ${varName}.trim();
if (${varName}.isEmpty()) {
throw new IllegalArgumentException(
"Illegal argument. The argument cannot be an empty string: ${varName}");
}
আপনি উপর থেকে নাল চেকিং টেম্পলেটটি পুনরায় ব্যবহার করতে পারেন এবং খালি স্ট্রিংয়ের জন্য যাচাই করতে এই স্নিপেটটি প্রয়োগ করতে পারেন। তারপরে আপনি উপরের কোডটি তৈরি করতে এই দুটি টেম্পলেট ব্যবহার করবেন।
উপরের টেম্পলেটটিতে অবশ্য সমস্যা রয়েছে যে যুক্তিটি চূড়ান্ত হলে আপনাকে উত্পাদিত কোডটি কিছু সংশোধন করতে হবে ( ${varName} = ${varName}.trim()
ব্যর্থ হবে)।
যদি আপনি প্রচুর চূড়ান্ত যুক্তি ব্যবহার করেন এবং খালি স্ট্রিংগুলি পরীক্ষা করতে চান তবে আপনার কোডের অংশ হিসাবে এগুলি ছাঁটাই করতে না চান, আপনি পরিবর্তে এটি দিয়ে যেতে পারেন:
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
if (${varName}.trim().isEmpty()) {
throw new IllegalArgumentException(
"Illegal argument. The argument cannot be an empty string: ${varName}");
}
testNullFieldState
আমি ভেরিয়েবলগুলি পরীক্ষা করার জন্য কিছু স্নিপেটও তৈরি করেছি যা আর্গুমেন্ট হিসাবে প্রেরণ করা হয় না (বড় পার্থক্যটি ব্যতিক্রমের ধরণ, এখন IllegalStateException
পরিবর্তে হ'ল )।
if (${varName} == null) {
throw new IllegalStateException(
"Illegal state. The variable or class field cannot be null: ${varName}");
}
testNullOrEmptyStringFieldState
if (${varName} == null) {
throw new IllegalStateException(
"Illegal state. The variable or class field cannot be null: ${varName}");
}
${varName} = ${varName}.trim();
if (${varName}.isEmpty()) {
throw new IllegalStateException(
"Illegal state. The variable or class field " +
"cannot be an empty string: ${varName}");
}
testArgument
এটি একটি ভেরিয়েবল পরীক্ষা করার জন্য একটি সাধারণ টেম্পলেট। সত্যিই এটির প্রশংসা করতে শিখতে আমার কয়েক বছর সময় লেগেছে, এখন আমি এটি প্রচুর ব্যবহার করছি (উপরের টেম্পলেটগুলির সাথে মিলিয়ে!)
if (!(${varName} ${testExpression})) {
throw new IllegalArgumentException(
"Illegal argument. The argument ${varName} (" + ${varName} + ") " +
"did not pass the test: ${varName} ${testExpression}");
}
আপনি একটি পরিবর্তনশীল নাম বা একটি শর্ত প্রবেশ করেন যা একটি মান দেয়, তারপরে অপারেন্ড ("==", "<", ">" ইত্যাদি) এবং অন্য মান বা ভেরিয়েবল এবং যদি পরীক্ষায় ব্যর্থ হয় তবে ফলাফল কোডটি একটি অবৈধআর্গুমেন্টেক্সটেক্সান ফেলবে।
"" ()) এ মুড়ে পুরো অভিব্যক্তিটি দিয়ে ক্লজটি সামান্য জটিল হওয়ার কারণটি ব্যতিক্রম বার্তায় পরীক্ষার শর্তটিকে পুনরায় ব্যবহার করা সম্ভব করে তোলা।
সম্ভবত এটি কোনও সহকর্মীকে বিভ্রান্ত করবে, তবে কেবলমাত্র যদি তাদের কোডটি দেখতে হয় তবে আপনি যদি এই ধরণের ব্যতিক্রম ছুঁড়ে মারেন তবে তাদের তাদের নাও থাকতে পারে ...
অ্যারে সহ এখানে একটি উদাহরণ:
public void copy(String[] from, String[] to) {
if (!(from.length == to.length)) {
throw new IllegalArgumentException(
"Illegal argument. The argument from.length (" +
from.length + ") " +
"did not pass the test: from.length == to.length");
}
}
আপনি টেমপ্লেটটি কল করে "from.leth" [TAB] "== to.length" টাইপ করে এই ফলাফলটি পান।
ফলাফলটি "অ্যারেআইন্ডেক্সআউটঅফফাউন্ডস এক্সেকশন" বা অনুরূপের চেয়ে মজাদার এবং প্রকৃতপক্ষে আপনার ব্যবহারকারীদের সমস্যাটি বের করার সুযোগ দিতে পারে।
উপভোগ করুন!