জিজ্ঞাসা করবেন না জিজ্ঞাসা নীতিটি বলে:
আপনি অবজেক্টগুলি তাদের কী করতে চান তা বলার চেষ্টা করা উচিত; তাদের রাষ্ট্র সম্পর্কে প্রশ্ন জিজ্ঞাসা করবেন না, সিদ্ধান্ত নিন এবং তারপরে তাদের কী করবেন তা বলুন।
সমস্যাটি হ'ল, আহ্বানকারী হিসাবে, আপনাকে বলা হওয়া অবজেক্টের অবস্থার উপর ভিত্তি করে সিদ্ধান্ত নেওয়া উচিত নয় যা ফলস্বরূপ আপনাকে বস্তুর অবস্থা পরিবর্তন করে changing আপনি যে যুক্তিটি বাস্তবায়ন করছেন এটি সম্ভবত আপনার নয়, অবজেক্টের দায়বদ্ধতা। আপনি অবজেক্টের বাইরে সিদ্ধান্ত নেওয়ার জন্য এর এনক্যাপসুলেশন লঙ্ঘন করে।
একটি সহজ উদাহরণ "বলুন, জিজ্ঞাসা করবেন না" হয়
Widget w = ...;
if (w.getParent() != null) {
Panel parent = w.getParent();
parent.remove(w);
}
এবং বলুন সংস্করণটি হ'ল ...
Widget w = ...;
w.removeFromParent();
তবে যদি অপসারণের থেকে আমার পিতামাতার পদ্ধতিটি জানা দরকার? আমার প্রথম প্রতিক্রিয়া হ'ল অপসারণটি পরিবর্তন করে পিতামাতার অপসারণ করা হয়েছে বা না থাকলে বুলেটিয়ান ডোনোটিং ফিরিয়ে দিতে rom
তবে আমি কমান্ড ক্যোয়ারী বিচ্ছেদ প্যাটার্ন জুড়ে এসেছি যা বলে না যে এটি করা উচিত নয়।
এতে বলা হয়েছে যে প্রতিটি পদ্ধতিতে হয় একটি কমান্ড হওয়া উচিত যা একটি ক্রিয়া করে, বা এমন একটি ক্যোয়ারী যা কলকারীকে ডেটা ফেরত দেয়, তবে উভয়ই নয়। অন্য কথায়, একটি প্রশ্ন জিজ্ঞাসা উত্তর পরিবর্তন করা উচিত নয়। আরও আনুষ্ঠানিকভাবে, পদ্ধতিগুলি কেবল তখনই একটি মান ফেরত পাঠানো উচিত যদি সেগুলি প্রাসঙ্গিকভাবে স্বচ্ছ হয় এবং এর ফলে কোনও পার্শ্ব প্রতিক্রিয়া থাকে না।
এই দুটি কি একে অপরের সাথে মতবিরোধের মধ্যে রয়েছে এবং আমি কীভাবে এই দুজনের মধ্যে বেছে নেব? আমি কি এই বিষয়ে প্র্যাকমেটিক প্রোগ্রামার বা বার্ট্রান্ড মেয়ের সাথে যাব?