হ্যাঁ, ত্রুটি আছে
যে কোডটি পড়তে সহজ তা ভাল, তবে কোডটি কীভাবে যোগাযোগ করে তা থেকেও সাবধান থাকুন । যখন কোনও বস্তুর পদ্ধতি সর্বদা বস্তুটিকে ফেরত দেয়, তখন এটি কয়েকটি জিনিস যোগাযোগ করে:
- আমার কাছে উন্নত কনফিগারেশন প্রয়োজন যা প্রয়োজনীয় জিনিসগুলিতে অর্ডার করা উচিত বা কনফিগার করা উচিত obvious
- প্রতিটি পরবর্তী পদ্ধতি কল শেষটি তৈরি করে
বৈধ ব্যবহারের কেস: অ্যাডহক ডেটাবেস কোয়েরি
ক্লাস লাইব্রেরিগুলি বেশিরভাগ প্রতিটি ভাষায় বিদ্যমান থাকে যা আপনাকে হার্ড কোডড এসকিউএলকে অবলম্বন না করে কোনও ডাটাবেসের অনুসন্ধানের অনুমতি দেয় allow উদাহরণ হিসাবে NET- এর সত্তা ফ্রেমওয়ার্কটি নিন:
DBContext db = new DBContext();
List<Post> posts = db.Posts
.Where(post => post.Title.Contains("Test"))
.OrderBy(post => post.DateCreated)
.ToList();
এটি একটি সাবলীল ইন্টারফেস যেখানে প্রতিটি পরবর্তী পদ্ধতি কলটি পূর্ববর্তীটিতে তৈরি করে। এই কলগুলি যৌক্তিকভাবে পড়া কোনও ডাটাবেস অনুসন্ধানের প্রসঙ্গে উপলব্ধি করে।
অবৈধ ব্যবহারের কেস: বৈশিষ্ট্য নির্ধারণের জন্য সিনট্যাকটিক্যাল সুগার
এবার Post
ক্লাসের সাথে একই প্যাটার্নটি ব্যবহার করা যাক :
public class Post
{
public string Title { get; set; }
public DateTime DateCreated { get; set; }
public string Body { get; set; }
public Post SetTitle(string title)
{
Title = title;
return this;
}
public Post SetDateCreated(DateTime created)
{
DateCreated = created;
return this;
}
public Post SetBody(string body)
{
Body = body;
return this;
}
}
আপনি এখন এই শ্রেণিটি কীভাবে ব্যবহার করবেন তা এখন দেখুন:
Post post = new Post()
.SetTitle("Test")
.SetDateCreated(DateTime.Now)
.SetBody("Just a test");
যখন আমি এই কোডটি দেখি, আমি তাত্ক্ষণিকভাবে এই প্রশ্নটি জিজ্ঞাসা করি: "কল করার পরে SetBody
, এটি কি ডেটাবেসকে কোয়েরি করে? 'আমি হয়ে গিয়েছি?' বলার জন্য কি আমাকে অন্য পদ্ধতি কল করার দরকার আছে?"
শৃঙ্খলিত পদ্ধতি কলগুলি ক্লাসটি ব্যবহার করে কোডটির সাথে কী যোগাযোগ করে Post
?
- আমার একটা জটিল সেটআপ আছে
- প্রতিটি মেথড কল পূর্ববর্তীটিতে তৈরি করে
এই হল আসলে সত্য? নং Post
বর্গ করে না একটি জটিল সেটআপ আছে। শিরোনাম সেট করা, তৈরি তারিখ এবং বডি আরও জটিল শেষ লক্ষের দিকে একে অপরের উপর তৈরি করে না । আপনি একটি বৃত্তাকার ছিদ্রটি একটি বৃত্তাকার গর্তে ছড়িয়ে দিয়েছেন।
স্ব-রেফারেন্সিয়াল পদ্ধতিতে শৃঙ্খলাবদ্ধ হওয়ার অসুবিধাটি হ'ল আপনি যোগাযোগ করেন যে একাধিক পদ্ধতি কলগুলি কিছু করার জন্য প্রয়োজন এবং প্রতিটি কল শেষটি তৈরি করে। যদি এটি সত্য না হয়, তবে পদ্ধতি শৃঙ্খলাবদ্ধতা অন্য প্রোগ্রামারগুলিতে ভুল জিনিসটি যোগাযোগ করে।
যখন আপনার সহকর্মীরা বলেছেন:
সাবলীল ইন্টারফেসগুলি কেবল সুবিধার জন্য প্রয়োগ করা উচিত নয়, শব্দার্থবিজ্ঞানের জন্য
তারা একেবারে সঠিক ছিল। একটি সাবলীল ইন্টারফেস বা পদ্ধতিতে শৃঙ্খলাবদ্ধ হয়ে নিজের মধ্যে এবং এমন কিছু যোগাযোগ করে যা সম্ভবত সত্য নাও হতে পারে।