এই ব্লগপোস্টটি হ্যাকার নিউজে পোস্ট করা হয়েছিল বেশ কয়েকটি উত্সাহের সাথে। সি ++ থেকে আগত, এই উদাহরণগুলির বেশিরভাগটি আমি যা শিখিয়েছি তার বিপরীতে।
যেমন উদাহরণ # 2:
খারাপ:
def check_for_overheating(system_monitor)
if system_monitor.temperature > 100
system_monitor.sound_alarms
end
end
বনাম ভাল:
system_monitor.check_for_overheating
class SystemMonitor
def check_for_overheating
if temperature > 100
sound_alarms
end
end
end
সি ++ এর পরামর্শ হ'ল আপনার এনক্যাপসুলেশন বাড়ানোর কারণে সদস্য ফাংশনের পরিবর্তে আপনার ফ্রি ফাংশনগুলি পছন্দ করা উচিত। এই উভয়ই শব্দার্থগতভাবে অভিন্ন, সুতরাং কেন আরও বেশি রাজ্যে অ্যাক্সেস থাকা পছন্দটিকে পছন্দ করবেন?
উদাহরণ 4:
খারাপ:
def street_name(user)
if user.address
user.address.street_name
else
'No street name on file'
end
end
বনাম ভাল:
def street_name(user)
user.address.street_name
end
class User
def address
@address || NullAddress.new
end
end
class NullAddress
def street_name
'No street name on file'
end
end
User
কোনও সম্পর্কযুক্ত ত্রুটির স্ট্রিংটি ফর্ম্যাট করার দায়িত্ব কেন ? যদি 'No street name on file'
রাস্তায় রাস্তা না থাকে তবে আমি মুদ্রণের পাশাপাশি কিছু করতে চাই ? যদি রাস্তার নাম একই জিনিস হয়?
কেউ কি আমাকে "বলুন, জিজ্ঞাসা করবেন না" সুবিধাগুলি এবং যৌক্তিকতা সম্পর্কে আলোকিত করতে পারে? আমি কোনটি ভাল তা সন্ধান করছি না, পরিবর্তে লেখকের দৃষ্টিভঙ্গি বোঝার চেষ্টা করছি।