পটভূমি
আমি "ক্লিন কোড বই" পড়ছি, এবং প্যারালেলে, আমি ব্যাঙ্কারের অ্যাকাউন্টের মতো কাতা ক্যালিথেনিক বস্তুগুলিতে কাজ করছি এবং আমি এই নিয়মে আটকে রয়েছি:
ক্যালিস্টেনিক অবজেক্টের নবম নিয়ম হ'ল আমরা গেটর বা সেটটার ব্যবহার করি না।
এটি বেশ মজাদার বলে মনে হচ্ছে এবং আমি এই নীতিটির সাথে একমত। তদ্ব্যতীত, ক্লিন কোডের 98-99 পৃষ্ঠায় লেখক ব্যাখ্যা করেছেন যে গ্রাহকরা / সেটটারগুলি বিমূর্ততা ভঙ্গ করে এবং আমাদের আমাদের অবজেক্টটি জিজ্ঞাসা করতে হবে না, তবে আমাদের আমাদের অবজেক্টটি বলতে হবে।
এটি আমার মনে নিখুঁত ধারণা তৈরি করে এবং আমি এই নীতির সাথে পুরোপুরি একমত agree অনুশীলনে সমস্যা আসে।
প্রসঙ্গ
উদাহরণস্বরূপ, আমার একটি অ্যাপ্লিকেশন রয়েছে যাতে আমাকে কিছু ব্যবহারকারীর তালিকা করতে হবে এবং ব্যবহারকারীর বিবরণ প্রদর্শন করতে হবে।
আমার ব্যবহারকারীর সমন্বয়ে গঠিত:
-> Name
--> Firstname --> String
--> Lastname --> String
-> PostalAddress
--> Street --> String
--> PostalCode --> String
সমস্যা
যখন আমি কেবল একটি সাধারণ তথ্য প্রদর্শন করা দরকার ( এবং আমাকে নিশ্চিত করতে হবে যে আমাকে সেই নির্দিষ্ট ক্ষেত্রে অতিরিক্ত ক্রিয়াকলাপের প্রয়োজন নেই ) একটি সরল (প্রথম নাম) মান প্রদর্শন করার জন্য কীভাবে আমি কী করতে পারি বা কী করতে পারি? এলোমেলো) আউটপুট সমর্থন?
আমার মনে যা আসে
একটি সমাধান করা হয়:
user.getName().getFirstName().getStringValue()
যা মোটামুটি ভয়াবহ, ক্যালিস্টেনিক অবজেক্টের অনেক নিয়ম ভঙ্গ করে এবং ডিমেটার আইন ভঙ্গ করে।
অন্য একটির মতো কিছু হবে:
String firstName = user.provideFirstnameForOutput();
// That would have called in the user object =>
String firstName = name.provideFirstnameForOutput();
// That would have called in the name object =>
String firstName = firstname.provideFirstnameForOutput();
তবে আমি এই সমাধানটি দিয়ে স্বাচ্ছন্দ্য বোধ করি না, এটি কেবলমাত্র "উচ্চতর অর্ডার অ্যাক্সেসর" বলে মনে হয় কেবলমাত্র একটি পদ্ধতি যা ডেমিটার আইনকে মেলাতে লক্ষ্য করে স্ট্যান্ডার্ড গেটর / সেটারকে বাইপাস করার মতো ...
কোন ধারণা ?