সুতরাং আমি জানি না এটি ভাল বা খারাপ কোড ডিজাইন কিনা তাই আমি ভেবেছিলাম আমি আরও ভাল জিজ্ঞাসা করব।
আমি প্রায়শই এমন পদ্ধতি তৈরি করি যা ক্লাসগুলিতে জড়িত ডেটা প্রসেসিং করে এবং আমি প্রায়শই পদ্ধতিতে অনেকগুলি চেক করি যাতে নিশ্চিত হয়ে যায় যে আমি হাতের কাছে নাল রেফারেন্স বা অন্যান্য ত্রুটি না পাচ্ছি।
খুব মৌলিক উদাহরণের জন্য:
// fields and properties
private Entity _someEntity;
public Entity SomeEntity => _someEntity;
public void AssignEntity(Entity entity){
_someEntity = entity;
}
public void SetName(string name)
{
if (_someEntity == null) return; //check to avoid null ref
_someEntity.Name = name;
label.SetText(_someEntity.Name);
}
আপনি দেখতে পাচ্ছেন প্রতিটি সময় নাল জন্য im পরীক্ষা করা। কিন্তু পদ্ধতিতে কি এই চেকটি রাখা উচিত নয়?
উদাহরণস্বরূপ বাহ্যিক কোডগুলি হাতের আগে ডেটা পরিষ্কার করা উচিত যাতে পদ্ধতিগুলি নীচের মত যাচাই করার প্রয়োজন হয় না:
if(entity != null) // this makes the null checks redundant in the methods
{
Manager.AssignEntity(entity);
Manager.SetName("Test");
}
সংক্ষেপে, পদ্ধতিগুলি "ডেটা বৈধকরণের" হওয়া উচিত এবং তারপরে ডেটাতে তাদের প্রক্রিয়াজাতকরণ করা উচিত, বা পদ্ধতিটি কল করার আগে এটির নিশ্চয়তা দেওয়া উচিত, এবং যদি আপনি পদ্ধতিটি কল করার আগে বৈধতা দিতে ব্যর্থ হন তবে এটি একটি ত্রুটি ছুঁড়ে ফেলবে (বা ধরুন ত্রুটি)?