আমি লিখেছি এমন কিছু কোডের মাধ্যমে ব্রাউজ করা, আমি নীচের নির্মাণে এসে পৌঁছলাম যা আমাকে ভাবছে। প্রথম নজরে, এটি যথেষ্ট পরিষ্কার বলে মনে হচ্ছে। হ্যাঁ, আসল কোডে getLocation()পদ্ধতিটির আরও কিছুটা সুনির্দিষ্ট নাম রয়েছে যা সঠিকভাবে এটি কোন অবস্থানটি অর্জন করবে তা বর্ণনা করে।
service.setLocation(this.configuration.getLocation().toString());
এই ক্ষেত্রে, serviceএকটি পরিচিত ধরনের একটি দৃষ্টান্ত পরিবর্তনশীল, পদ্ধতি মধ্যে ঘোষিত হয়। this.configurationক্লাস কন্সট্রাক্টরের কাছে পৌঁছে দেওয়া থেকে আসে এবং এটি কোনও শ্রেণিবদ্ধ একটি নির্দিষ্ট ইন্টারফেস (যা জনসাধারণের getLocation()পদ্ধতিতে আদেশ দেয় ) প্রয়োগ করে of সুতরাং, অভিব্যক্তিটির রিটার্নের ধরণটি this.configuration.getLocation()জানা যায়; বিশেষভাবে এই ক্ষেত্রে, এটি একটি হল java.net.URLযেহেতু, service.setLocation()একটি চায় String। স্ট্রিং এবং ইউআরএল দুই প্রকারের সরাসরি সামঞ্জস্যপূর্ণ না হওয়ায় বৃত্তাকার ছিদ্রের বর্গক্ষেত্রের পেগ ফিট করার জন্য কোনও ধরণের রূপান্তর প্রয়োজন।
তবে , এ উদাহৃত যেমন Demeter বিধি-ব্যবস্থা অনুসারে ক্লিন কোড , একটি পদ্ধতি চ ক্লাসে সি শুধুমাত্র পদ্ধতি উপর কল করা উচিত সি , দ্বারা নির্মিত বস্তু বা আর্গুমেন্ট হিসাবে পাস চ , এবং উদাহরণ হিসেবে বলা যায় ভেরিয়েবল অনুষ্ঠিত বস্তু সি । এর বাইরে যে কোনও কিছুই ( toString()উপরের আমার বিশেষ ক্ষেত্রে চূড়ান্ত , যদি না আপনি পদ্ধতিটির অনুরোধের ফলে তৈরি হওয়া কোনও অস্থায়ী বিষয়টিকে নিজে বিবেচনা করেন, তবে এই ক্ষেত্রে পুরো আইনটি মোটা বলে মনে হয়) তবে তা অনুমোদিত নয়।
উপরোক্ত মত কলগুলি তালিকাভুক্ত প্রতিবন্ধকতাগুলি দেখিয়ে নিরুৎসাহিত করা বা নিষেধ করা উচিত কেন এর কোন বৈধ যুক্তি আছে? নাকি আমি শুধু মাত্রাতিরিক্ত নীটপিকি হয়ে যাচ্ছি?
যদি আমি এমন কোনও পদ্ধতি প্রয়োগ করি URLToString()যা কেবল toString()কোনও URLবস্তুর উপর কল করে (যেমনটি ফিরে আসে getLocation()) এটি প্যারামিটার হিসাবে প্রেরণ করে এবং ফলাফলটি ফিরে আসে, getLocation()ঠিক একই ফলাফলটি অর্জনের জন্য আমি কলটি মোড়ানো করতে পারতাম ; কার্যকরভাবে, আমি কেবল রূপান্তরকে এক ধাপ বাইরে নিয়ে যেতে চাই। এটি কি কোনওভাবে এটি গ্রহণযোগ্য করে তুলবে? (এটি স্বজ্ঞাতভাবে আমার কাছে মনে হয়েছে যে এটি কোনওভাবেই কোনও পার্থক্য তৈরি করা উচিত নয়, যেহেতু এটি সমস্ত কিছুকে কিছুটা ঘুরিয়ে দেয় However তবে, ল অফ অফ ডিমেটারের চিঠিটি উদ্ধৃত হিসাবে দেওয়া, এটি গ্রহণযোগ্য হবে, যেহেতু আমি তারপরে কোনও ফাংশনের প্যারামিটারে সরাসরি পরিচালনা করা হবে))
এটি যদি toString()কোনও স্ট্যান্ডার্ড ধরণের কল করার চেয়ে কিছুটা বেশি বিদেশী কিছু নিয়ে আসে তবে কি কোনও পার্থক্য হবে ?
উত্তর দেওয়ার সময়, মনে রাখবেন যে পরিবর্তনশীল যে ধরণের হয় তার আচরণ বা এপিআই serviceপরিবর্তন করা কার্যকর নয়। এছাড়াও, তর্কের খাতিরে, বলি যে রিটার্নের ধরণের পরিবর্তন getLocation()করাও অযৌক্তিক।