সম্ভবত এটি কমান্ড-ক্যোয়ারী বিচ্ছেদ নীতিটির কারণে হয়েছে ?
সিকিউএস ও ও ও ক্রিয়ামূলক প্রোগ্রামিং শৈলীর ছেদগুলিতে জনপ্রিয় হতে থাকে, কারণ এটি এমন কোনও বস্তুর পদ্ধতির মধ্যে স্পষ্টত পার্থক্য তৈরি করে যা পার্শ্ব-প্রতিক্রিয়াগুলি করে না বা না করে (যেমন, এটি বস্তুর পরিবর্তন করে)। ভেরিয়েবল অ্যাসাইনমেন্টে সিকিউএস প্রয়োগ করা এটি স্বাভাবিকের চেয়ে আরও বেশি সময় নিচ্ছে, তবে একই ধারণাটি প্রযোজ্য।
কেন CQS দরকারী সংক্ষিপ্ত চিত্রণ: একটি সঙ্গে একটি প্রকল্পিত সংকর এফ / OO যেমন পণ্য ভাষা বিবেচনা List
বর্গ আছে পদ্ধতি Sort
, Append
, First
, এবং Length
। অপরিহার্য ওও স্টাইলে, কেউ এই জাতীয় কোনও ফাংশন লিখতে চাইতে পারেন:
func foo(x):
var list = new List(4, -2, 3, 1)
list.Append(x)
list.Sort()
# list now holds a sorted, five-element list
var smallest = list.First()
return smallest + list.Length()
যদিও আরও কার্যকরী শৈলীতে, কেউ সম্ভবত আরও কিছু লিখবেন:
func bar(x):
var list = new List(4, -2, 3, 1)
var smallest = list.Append(x).Sort().First()
# list still holds an unsorted, four-element list
return smallest + list.Length()
এগুলি একই জিনিস করার চেষ্টা করছে বলে মনে হয় , তবে স্পষ্টতই দুজনের একটিরই ভুল এবং পদ্ধতিগুলির আচরণ সম্পর্কে আরও কিছু না জেনে আমরা কোনটি বলতে পারি না।
সিকিউএস ব্যবহার করে তবে আমরা জোর দিয়ে বলব যে Append
এবং যদি Sort
তালিকাটি পরিবর্তন করে তবে তাদের অবশ্যই ইউনিট প্রকারটি ফিরিয়ে দিতে হবে, যাতে আমাদের যখন না করা উচিত তখন দ্বিতীয় ফর্মটি ব্যবহার করে বাগ তৈরি করা থেকে বিরত থাকে। পার্শ্ব প্রতিক্রিয়া উপস্থিতি এছাড়াও পদ্ধতি স্বাক্ষর জড়িত হয়ে ওঠে।