কেন জাভা ডিজাইনাররাjava.lang.String
ক্লাসে স্ট্রিং ম্যানিপুলেশন পদ্ধতির স্থির সংস্করণ তৈরি করেনি ? নিম্নলিখিত পদ্ধতিগুলি আমি উল্লেখ করছি তবে প্রশ্নটি ক্লাসের অন্যান্য অ-স্থিতিশীল পদ্ধতিতেও বাড়ানো যেতে পারে।
concat(String) substring(int, int)
replace(char, char) toLowerCase()
replace(CharSequence, CharSequence) toLowerCase(Locale)
replaceAll(String, String) toString()
replaceFirst(String, String) toUpperCase()
split(String) toUpperCase(Locale)
split(String, int) trim()
substring(int)
এই পদ্ধতির কেবল অ-স্থিতিশীল সংস্করণ থাকার কারণে এ জাতীয় পদ্ধতিটি যে কোনও জায়গায় স্পষ্টভাবে নাল চেক করতে বাধ্য হয়। উদাহরণস্বরূপ, কেবল আহ্বান example = example.trim()
হতে হবে নালপয়েন্টারএক্সেপশন যদি String example = null
। সুতরাং প্রোগ্রামারকে নিম্নলিখিত বয়লারপ্লেট নাল চেক করতে হবে:
if (example != null)
example = example.trim();
// OR:
example = (example==null) ? null : example.trim();
example = (example==null) ? null : example.substring(5);
আমি কল্পনা করতাম যদি String
এই পদ্ধতিগুলির স্থির সংস্করণগুলি (সম্ভবত একচেটিয়াভাবেও ) থাকত তবে এটি অনেক বেশি সুবিধাজনক হত, যা ইনপুট স্ট্রিংটিকে প্রথম যুক্তি হিসাবে গ্রহণ করবে:
example = String.trim(example);
example = String.replace(example, 'a', 'b');
example = String.substring(example, 5);
এটি প্রোগ্রামারদের দ্বারা লিখিত ক্লিনার কোডে পরিচালিত হতে পারে যা প্রোগ্রামারদের স্পষ্টভাবে নাল কেসগুলি হ্যান্ডেল করতে বাধ্য করার চেয়ে কেবল নাল ফিরিয়ে দিয়ে নাল কেসের যত্ন নেবে। নাল এর ফিরে একটি সাধিত যেহেতু আমাকে জ্ঞান করে তোলে নাল স্ট্রিং একটি স্থাপিত হবে নাল স্ট্রিং, না একটি ত্রুটি।
জাভা ডিজাইনাররা যখন String
জাভা 1 বা জাভা 2-তে ক্লাসটি ডিজাইন করেছিলেন , বা এমনকি জাভা সংস্করণে এ জাতীয় কার্যকারিতা যুক্ত করেছিলেন তখন কেন এটি সম্পর্কে চিন্তা করেননি ?
null
একটি ব্যতিক্রমী রাষ্ট্র এবং স্পষ্টভাবে পরিচালনা করা উচিত।
Maybe<T>
আমার ধারণা, এটি কোনও ধরণের দরিদ্র পুনঃসংশোধন ?
string name = employee?.personalData?.name
। ঠিক যেমন এই সমস্ত পুনরাবৃত্তির জন্য একটি শর্টকাট if (employee != null)
। সম্পর্কিত এসও প্রশ্ন: স্ট্যাকওভারফ্লো