আমরা FindBugs ব্যবহার করা এবং @Nonnull
যথাযথভাবে আমাদের পরামিতিগুলি বৌদ্ধিকরণ শুরু করেছি এবং চক্রের প্রথম দিকে বাগগুলি চিহ্নিত করতে এটি দুর্দান্ত কাজ করে। এখনও অবধি আমরা null
পেয়ারা ব্যবহারের জন্য এই যুক্তিগুলি যাচাই করে checkNotNull
দেখছি, তবে আমি null
কেবল প্রান্তগুলিতেই পরীক্ষা করতে পছন্দ করব - যে জায়গাগুলিতে মানটি পরীক্ষণ না করেই প্রবেশ করতে পারে null
, যেমন, একটি সোপ অনুরোধ।
// service layer accessible from outside
public Person createPerson(@CheckForNull String name) {
return new Person(Preconditions.checkNotNull(name));
}
...
// internal constructor accessed only by the service layer
public Person(@Nonnull String name) {
this.name = Preconditions.checkNotNull(name); // remove this check?
}
আমি বুঝতে পারি যে মানগুলি নিজেই @Nonnull
অবরুদ্ধ করে না null
।
যাইহোক, যে ফাইন্ডব্যাগগুলি চিহ্নহীন ক্ষেত্র থেকে চিহ্নিত চিহ্নিত স্থানে যে কোনও স্থান স্থানান্তরিত হবে তা নির্দেশ করবে @Nonnull
, আমরা যে কোনও null
জায়গাতেই এই মানগুলি পরীক্ষা না করেই এই মানগুলি (যা এটি করে) ধরার জন্য তার উপর নির্ভর করতে পারি না? পদ্ধতি? আমি কি সরঞ্জামটি বিশ্বাস করতে এবং এই ভার্বোস চেকগুলি এড়াতে নির্দোষ?
নীচের লাইন:null
নীচের দ্বিতীয় চেকটি সরিয়ে ফেলা নিরাপদ বলে মনে হচ্ছে , এটি কি খারাপ অভ্যাস?
এই প্রশ্নটি সম্ভবত নালটির জন্য পরীক্ষা করা উচিত কিনা নলের জন্য খুব ভাল অনুরূপ , তবে আমি টীকাটির সাথে বিশেষভাবে জিজ্ঞাসা করছি @Nonnull
।
@Nonnull
চুক্তির স্পেসিফিকেশন হিসাবে আমি ঠিক এভাবেই ব্যবহার করছি । আমি চুক্তির পিছনে রক্ষণাত্মক চেকগুলি সরিয়েছি এবং এখনও পর্যন্ত কোনও সমস্যায় পড়েনি।