চেইনিং কখন ব্যবহার করবেন
ফাংশন শৃঙ্খলা বেশিরভাগ ভাষাতে জনপ্রিয় যেখানে অটো-সম্পূর্ণ সহ একটি আইডিই সাধারণ জায়গা। উদাহরণস্বরূপ, প্রায় সমস্ত সি # বিকাশকারী ভিজ্যুয়াল স্টুডিও ব্যবহার করেন। সুতরাং, যদি আপনি সি # এর সাথে বিকাশ করেন তবে আপনার পদ্ধতিগুলিতে শৃঙ্খলা যুক্ত করা সেই শ্রেণীর ব্যবহারকারীদের জন্য একটি সময় বাঁচতে পারে কারণ ভিজুয়াল স্টুডিও আপনাকে চেইন তৈরিতে সহায়তা করবে।
অন্যদিকে, পিএইচপি এর মতো ভাষাগুলি যা প্রকৃতিতে অত্যন্ত গতিশীল এবং প্রায়শই আইডিইতে স্বতঃসম্পর্কিত সমর্থন না থাকে তারা চেইন সমর্থন করে এমন কম ক্লাস দেখতে পাবে। চেইনিং কেবল তখনই উপযুক্ত হবে যখন সঠিক পিএইচপিডোকস চেইনযোগ্য পদ্ধতিগুলি প্রকাশের জন্য নিযুক্ত করা হয়।
শৃঙ্খল কি?
Foo
নিম্নলিখিত দুটি পদ্ধতি নামের একটি শ্রেণি দেওয়া উভয় শৃঙ্খলযোগ্য।
function what() { return this; }
function when() { return new Foo(this); }
বর্তমানের উদাহরণগুলির মধ্যে একটি হল একটি উল্লেখ এবং এটি একটি নতুন উদাহরণ তৈরি করে যে এগুলি চেইনযোগ্য পদ্ধতি are
কোনও সোনার নিয়ম নেই যে একটি শৃঙ্খলাবদ্ধ পদ্ধতিতে কেবল বর্তমান অবজেক্টটি উল্লেখ করতে হবে। প্রকৃত, শৃঙ্খলযোগ্য পদ্ধতি দুটি পৃথক ক্লাস জুড়ে হতে পারে। উদাহরণ স্বরূপ;
class B { function When() { return true; } };
class A { function What() { return new B(); } };
var a = new A();
var x = a.What().When();
this
উপরোক্ত উদাহরণটির কোনও উল্লেখ নেই । কোডটি a.What().When()
একটি শৃঙ্খলার উদাহরণ। মজার বিষয় হ'ল শ্রেণীর ধরণটি B
কখনই কোনও ভেরিয়েবলের জন্য বরাদ্দ করা হয় না।
কোনও পদ্ধতি শৃঙ্খলিত হয় যখন তার ফেরতের মানটি প্রকাশের পরবর্তী উপাদান হিসাবে ব্যবহৃত হয়।
এখানে আরও কিছু উদাহরণ দেওয়া হল
// return value never assigned.
myFile.Open("something.txt").Write("stuff").Close();
// two chains used in expression
int x = a.X().Y() * b.X().Y();
// a chain that creates new strings
string name = str.Substring(1,10).Trim().ToUpperCase();
কখন ব্যবহার করবেন this
এবংnew(this)
বেশিরভাগ ভাষায় স্ট্রিং অপরিবর্তনীয়। সুতরাং চেইন পদ্ধতিতে কলগুলি সর্বদা নতুন স্ট্রিং তৈরি হওয়ার ফল দেয়। যেখানে স্ট্রিংবিল্ডারের মতো কোনও বস্তু পরিবর্তন করা যেতে পারে।
ধারাবাহিকতা সেরা অনুশীলন।
যদি আপনার কাছে এমন কোনও পদ্ধতি রয়েছে যা কোনও অবজেক্টের স্থিতি পরিবর্তন করে এবং ফিরে আসে this
, তবে নতুন পদ্ধতিগুলিতে ফিরে আসে এমন পদ্ধতিগুলিতে মেশাবেন না। পরিবর্তে, একটি নির্দিষ্ট পদ্ধতি তৈরি করুন Clone()
যা এটি স্পষ্টভাবে এটি করবে create
var x = a.Foo().Boo().Clone().Foo();
এটি ভিতরে যা চলছে তা অনেকটা পরিষ্কার a
।
স্টেপ আউটসাইড অ্যান্ড ব্যাক ট্রিক
আমি এটিকে পদক্ষেপ এবং পিছনের কৌশল বলে আছি , কারণ এটি শৃঙ্খলা সম্পর্কিত অনেকগুলি সাধারণ সমস্যা সমাধান করে। মূলত এর অর্থ হ'ল আপনি আসল বর্গ থেকে বের হয়ে একটি নতুন অস্থায়ী শ্রেণিতে চলে যান এবং তারপরে মূল শ্রেণিতে ফিরে যান।
অস্থায়ী শ্রেণীটি কেবলমাত্র মূল শ্রেণীর জন্য বিশেষ বৈশিষ্ট্য সরবরাহ করার জন্য বিদ্যমান, তবে কেবল বিশেষ শর্তে।
প্রায়শই এমন সময় আসে যখন একটি শৃঙ্খলে রাষ্ট্র পরিবর্তন করার প্রয়োজন হয় তবে শ্রেণি এই A
সমস্ত সম্ভাব্য রাজ্যের প্রতিনিধিত্ব করতে পারে না । সুতরাং একটি শৃঙ্খল সময় একটি নতুন শ্রেণী চালু যে একটি রেফারেন্স ফিরে রয়েছে A
। এটি প্রোগ্রামারকে একটি রাজ্যে প্রবেশ করতে এবং ফিরে যেতে সহায়তা করে A
।
এখানে আমার উদাহরণ, বিশেষ রাষ্ট্র হিসাবে পরিচিত করা যাক B
।
class A {
function Foo() { return this; }
function Boo() { return this; }
function Change() return new B(this); }
}
class B {
var _a;
function (A) { _a = A; }
function What() { return this; }
function When() { return this; }
function End() { return _a; }
}
var a = new A();
a.Foo().Change().What().When().End().Boo();
এখন এটি একটি খুব সাধারণ উদাহরণ। আপনি যদি আরও নিয়ন্ত্রণ B
রাখতে চান তবে তার নতুন A
পদ্ধতিতে ফিরে আসতে পারে যার বিভিন্ন পদ্ধতি রয়েছে।