আপনি কি StringUtils.EMPTY
পরিবর্তে ব্যবহার করবেন ""
?
আমি হয় একটি রিটার্ন মান হিসাবে বা আপনি যদি একটি স্ট্রিং ভেরিয়েবলের মান সেট করে। আমার তুলনা করার অর্থ নেই, কারণ আমরা সেখানে ব্যবহার করিStringUtils.isEmpty()
উত্তর:
অবশ্যই না. আপনি কি সত্যিই "" যথেষ্ট পরিস্কার না বলে মনে করেন?
ধ্রুবকগুলির কাছে মূলত 3 টি ব্যবহারের মামলা রয়েছে:
এখানে কেউ আবেদন করে না।
EMPTY
কোনও অর্থ বহন করে না যা খালি স্ট্রিংটিতে ইতিমধ্যে নেই। সবচেয়ে উল্লেখযোগ্যভাবে, আপনি কেন সেই নির্দিষ্ট ক্ষেত্রে খালি স্ট্রিং ব্যবহার করার সিদ্ধান্ত নিয়েছিলেন তা নথিভুক্ত করে না । একটি ধ্রুবকটির নামকরণ করা ONE
এবং মানটির পরিবর্তে সেই ধ্রুবকটি ব্যবহার করার কোনও বিষয় ছিল তা ভান করা আলাদা নয় ।
আমি StringUtils.EMPTY
আক্ষরিক আড়াল করার জন্য এবং এটি return StringUtils.EMPTY
সম্পূর্ণরূপে প্রত্যাশিত প্রকাশ করার জন্য এবং একটি খালি স্ট্রিং ফিরে আসার জন্য ব্যবহার করি , ""
এমন অনুমানের দিকে নিয়ে ""
যেতে পারে যা সহজেই অন্য কোনও কিছুতে পরিবর্তিত হতে পারে এবং এটি সম্ভবত একটি ভুল ছিল। আমি মনে করি এটি EMPTY
আরও প্রকাশিত।
StringUtils.EMPTY
কম অভিব্যক্তি খুঁজে পাই ""
।
""
ব্যবহারের চেয়ে বেশি ভাববাদী বলে মনে করি StringUtils.EMPTY
এবং আপনি যা বলেছিলেন তাতে আমার মন পরিবর্তন হয়নি। আমি কেবল বিশ্বাস করতে পারি যে বিকাশকারীরা খুব খালি মাঝে মাঝে খুব সহজেই একটি খালি স্ট্রিং আক্ষরিক লিখেছেন - তবে আমি একবারে মিলিয়ন (এবং সহজেই পরীক্ষায় পাওয়া যাবে আশা করি ... ) বাগ, ব্যক্তিগতভাবে।
না, শুধু ব্যবহার করুন ""
।
আক্ষরিক ""
স্ফটিক হিসাবে পরিষ্কার। এর অর্থ কী ছিল তা নিয়ে কোনও ভুল বোঝাবুঝি নেই। আমি জানিনা কেন তার জন্য আপনার ক্লাস ধ্রুবকের প্রয়োজন হবে। আমি কেবল ধরে নিতে পারি যে এই ধ্রুবকটি StringUtils
পরিবর্তে থাকা প্যাকেজটিতে ব্যবহৃত হয় ""
। যদিও এর অর্থ এই নয় যে আপনার এটি ব্যবহার করা উচিত।
ফুটপাতে যদি শিলা থাকে তবে আপনাকে এটি ফেলে দিতে হবে না।
আমি আশ্চর্য হয়েছি যে "" "আসলেই একটি ফাঁকা স্ট্রিং হ'ল অন্ধভাবে ধরে" এবং "(দুর্ঘটনাক্রমে?) ইউনিকোডের বিস্ময়কর অদৃশ্য এবং অ ফাঁক ফাঁকে কোন অক্ষর ধারণ করে না? যা ভাল এবং শালীন সেগুলির ভালবাসার জন্য, আপনি যখনই পারেন EMPTY ব্যবহার করুন।
আমি এখানে আমার দুটি সেন্ট যুক্ত করব কারণ আমি কেউ String
ইন্টার্নিং এবং ক্লাস ইনিশিয়ালেশনের কথা বলছি না :
String
জাভা উত্স মধ্যে লিটারেল, অন্তরীণ তৈরি করছেন কোনো ""
এবং একই বস্তুStringUtils.EMPTY
StringUtils.EMPTY
করতে পারেStringUtils
, কারণ এটি EMPTY
ঘোষিত না হলেই এটিfinal
তার স্থির সদস্যকে অ্যাক্সেস করে (জেএলএস that পয়েন্টে সুনির্দিষ্ট)। তবে এটি চূড়ান্ত, সুতরাং এটি ক্লাসটি আরম্ভ করবে না।org.apache.commons.lang3.StringUtils.EMPTY
জেএলএস 12.4.1 উল্লেখ করে স্ট্রিং ইন্টার্নিং এবং শ্রেণি সূচনা সম্পর্কিত সম্পর্কিত উত্তর দেখুন ।
StringUtils
।
আমি সত্যিই এটি ব্যবহার করতে পছন্দ করি না যেমন return "";
তুলনায় খাটো return StringUtils.EMPTY
।
তবে এটি ব্যবহার করার একটি ভুয়া সুবিধা হ'ল আপনি যদি টাইপ করেনreturn " ";
পরিবর্তেreturn "";
বিভিন্ন আচরণের মুখোমুখি হতে পারে (আপনি যদি খালি স্ট্রিং সঠিকভাবে পরীক্ষা করেন কিনা তা সম্পর্কিত)।
""
, আমি একই আক্ষরিক স্ট্রিং একাধিকবার টাইপ করতে এমনকি ঘৃণা করি এমনকি একবার কখনও কখনও। আমি বরং কনস্ট্যান্টস.জভাতে কনস্ট্যান্টগুলি ঘোষণা করব , তবে উত্স কোডে এগুলি সর্বত্র পুনরাবৃত্তি করব না।
return "";
কুশ্রী, আমি পছন্দ আগমন ব্যবহার করতে StringUtil.EMPTY
(আমার নিজস্ব বর্গ ঘোষণা StringUtil , না এ্যাপাচি এর StringUtils )।
যদি আপনার শ্রেণি কমন্স থেকে অন্য কিছু ব্যবহার না করে তবে কেবল এই যাদু মানের জন্য এই নির্ভরতা থাকাটাই দুঃখজনক হবে।
স্ট্রিংটিলসের ডিজাইনার এই ধ্রুবকটির ভারী ব্যবহার করে এবং এটি করা সঠিক জিনিস, তবে এর অর্থ এই নয় যে আপনার এটিও ব্যবহার করা উচিত।
সত্যি বলতে, আমি কোনটির বেশি ব্যবহার দেখতে পাচ্ছি না। আপনি উদাহরণস্বরূপ একটি খালি স্ট্রিং তুলনা করতে চান, শুধু ব্যবহার করুনStringUtils.isNotEmpty(..)
StringUtils.isNotEmpty(..)
এটি একটি নালচেকও করে তাই এটি খালি স্ট্রিংয়ের সাথে তুলনা করার মতো ঠিক না।
null
? এর ২ য় যুক্তি হিসাবে equals
, তবে ফলাফলটি একই হবে -false
isNotEmpty
বিপরীত "".equals(…)
, অত যে, আসলে এটা বিবেচনা করবে null
খালি স্ট্রিং মত হয় একটি খালি স্ট্রিং সঙ্গে তুলনা বিভিন্ন "".equals("")
→ true
, "".equals(null)
→ false
, StringUtils.isNotEmpty("")
→ false
, StringUtils.isNotEmpty(null)
→ false
। যদি আপনি কেবল জানতে চান যে কোনও স্ট্রিং ফাঁকা আছে কিনা, ব্যবহার করুন string.isEmpty()
, true
যদি এটি খালি স্ট্রিং হয় এবং NullPointerException
যদি স্ট্রিংটি থাকে তবে একটি নিক্ষেপ করার সঠিক আচরণ আছে null
...
আমি StringUtils.EMPTY
যোগ্যতার জন্য কিছু ক্ষেত্রে দরকারী মনে করি । বিশেষত:
টার্নারি অপারেটর যেমন।
item.getId() != null ? item.getId() : StringUtils.EMPTY;
এছাড়াও একটি ধ্রুবক ব্যবহার করে, একটি রেফারেন্স StringUtils.EMPTY
তৈরি করা হয়। অন্যথায় যদি আপনি স্ট্রিং আক্ষরিক ""
প্রতিবার ইনস্ট্যান্ট করার চেষ্টা করেন তবে JVM কে স্ট্রিং পুলটিতে ইতিমধ্যে উপস্থিত রয়েছে কিনা তা যাচাই করতে হবে (যা সম্ভবত এটি ঘটবে, সুতরাং কোনও অতিরিক্ত উদাহরণের ওভারহেড তৈরি হবে না)। নিশ্চয়ই StringUtils.EMPTY
স্ট্রিং পুল চেক করার প্রয়োজনীয়তা এড়ানো হচ্ছে?
StringUtils.EMPTY
ধ্রুবকটি সংকলন-সময়ে সমাধান করা হয়েছে।
StringUtil.EMPTY
একটি সংকলন-সময় ধ্রুবক, তাই এর একটি উল্লেখটি ""
সরাসরি ব্যবহারের মতো ঠিক একই বাইকোডে সংকলিত হয় । তৃতীয় অপারেটরের কেন কোনও পার্থক্য করা উচিত তা আমি দেখতে পাচ্ছি না। এটি অন্য যে কোনও মত প্রকাশ। নাম ধ্রুবক ব্যবহার বা না করার যে কোনও কারণ টের্নারি অপারেটরের ক্ষেত্রেও প্রযোজ্য।
না, কারণ আমার আরও কিছু লেখার আছে। এবং একটি খালি স্ট্রিং প্লাটফর্ম স্বাধীন খালি (জাভাতে)।
File.separator
"/" বা "\" এর চেয়ে ভাল।
তবে আপনার পছন্দ মতো করুন। আপনি টাইপো পেতে পারেন নাreturn " ";
someString.isEmpty()
।
হ্যাঁ, এটা বোঝা যায়। এটি কেবলমাত্র একমাত্র পথ নয় তবে আমি এই "অর্থবোধ করি না" বলার পথে খুব কমই দেখতে পাচ্ছি।
আমার মতে:
It will still require changing everywhere if you don't define your own variable and use it in multiple places.
আপনি কি একটি খালি স্ট্রিংকে অন্য একটি ফাঁকা স্ট্রিংয়ে পরিবর্তন করবেন?
StringUtils.EMPTY
। এটি স্পষ্ট করে দেয় যে খালি স্ট্রিংয়ের ব্যবহার উদ্দেশ্যপ্রণোদিত, এবং কোনও ধরণের আলস্য নয় ("ওহ, এটির একটি স্ট্রিং দরকার, আসুন পাস করুন""
")। যদি এই কোডের টুকরোটি কেউ হিট করে তবে সে পরিবর্তনগুলি করার আগে দুবার ভাবেন। এছাড়াও, যদিStringUtils.EMPTY
আপনার নিজস্ব ভেরিয়েবল হিসাবে সংজ্ঞায়িত করা হয়, যেমনMyClass.EMPTY
, "শূন্যতার প্রতিনিধিত্ব" পরিবর্তন করে কোডের একটি লাইন পরিবর্তন করা প্রয়োজন। আপনি উদাহরণস্বরূপ,"<empty>"
খালি স্ট্রিংয়ের পরিবর্তে এটিকে পরিবর্তন করতে পারেন""
। তবে, আমি মনে করি এটি কিছুটা দূরে চলেছে।