পুরানো (এবং "উত্তর") প্রশ্ন, তবে আমি উত্তর হিসাবে আমার দুটি সেন্টে টস করব।
টিএল; ডিআর - আপনার দরকার নেই তবে এটি কিছু ক্ষেত্রে আপনার কোডটিকে আরও অনেক স্পষ্ট করতে পারে।
যদিও একটি সুস্পষ্ট রিটার্ন ব্যবহার না করা "রুবি ওয়ে" হতে পারে তবে এটি অপরিচিত কোড সহ কর্মরত প্রোগ্রামারদের কাছে বিভ্রান্ত করছে বা রুবির এই বৈশিষ্ট্যটির সাথে অপরিচিত।
এটি কিছুটা সংশ্লেষিত উদাহরণ, তবে এইরকম একটি সামান্য ফাংশন থাকার কথা কল্পনা করুন যা উত্তীর্ণ সংখ্যার সাথে একটি যোগ করে এবং এটি উদাহরণ ভেরিয়েবলের জন্য নির্ধারণ করে।
def plus_one_to_y(x)
@y = x + 1
end
এর অর্থ কি এমন কোনও ফাংশন যা কোনও মান ফিরিয়ে দিয়েছে, না? এটি উভয়ই উদাহরণটি পরিবর্তনশীল হিসাবে নির্ধারিত করে, এবং নির্ধারিত মানটিও প্রদান করে, কারণ এটি বিকাশকারী বলতে কী বোঝায় তা বলা শক্ত।
মনে করুন অনেক পরে, আরেকজন প্রোগ্রামার (সম্ভবত কোডটি শেষের লাইনের উপর ভিত্তি করে রুবি কীভাবে রিটার্ন দেয় তার সাথে পরিচিত নয়) বরাবর আসে এবং লগিংয়ের জন্য কিছু মুদ্রণ বিবৃতি দিতে চায়, এবং ফাংশনটি এটি হয়ে যায় ...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
end
যদি কোনও কিছু প্রত্যাশিত মান আশা করে তবে ফাংশনটি নষ্ট হয়ে গেছে । যদি কোনও কিছুই প্রত্যাবর্তিত মান আশা করে না, তবে তা ঠিক আছে। স্পষ্টতই যদি কোথাও কোড শৃঙ্খলার নিচে থাকে, যেটিকে কল করে এমন কোনও কিছু প্রত্যাবর্তিত মানের প্রত্যাশা করে, এটি ব্যর্থ হতে চলেছে কারণ এটি প্রত্যাশা করে যা ফিরে পাচ্ছে না।
এখন আসল প্রশ্নটি হ'ল: সত্যিকার অর্থে কোনও প্রত্যাশিত মূল্য কি প্রত্যাশা করেছিল? এটি কিছু ভেঙেছিল নাকি? ভবিষ্যতে কি কিছু ভেঙে যাবে? কে জানে! সমস্ত কলগুলির কেবলমাত্র একটি সম্পূর্ণ কোড পর্যালোচনা আপনাকে জানাতে দেবে।
আমার পক্ষে কমপক্ষে, সর্বোত্তম অনুশীলন পদ্ধতির হ'ল হয় খুব স্পষ্টভাবে বোঝানো যে আপনি যদি কিছু গুরুত্বপূর্ণ করে থাকেন তবে আপনি তা ফিরিয়ে দিচ্ছেন বা যখন তা হবে না তখন কিছুই ফিরিয়ে দেবেন না।
সুতরাং আমাদের ছোট ডেমো ফাংশনের ক্ষেত্রে, ধরে নিলাম আমরা এটির কোনও মান ফেরত চাইব, এটি এইভাবে লেখা হবে ...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
return @y
end
এবং এটি যে কোনও প্রোগ্রামারের কাছে খুব স্পষ্ট হবে যে এটি কোনও মান ফিরিয়ে দেয় এবং এটি উপলব্ধি না করে এটিকে ভাঙ্গা তাদের পক্ষে আরও শক্ত।
বিকল্পভাবে, কেউ এটি এর মতো লিখতে পারে এবং রিটার্নের বিবৃতি ছেড়ে দিতে পারে ...
def plus_one_to_y(x)
@y = x + 1
puts "In plus_one_to_y"
@y
end
তবে কেন ফেরত শব্দটি বাদ দিয়ে বিরক্ত করবেন? কেন এটি কেবল সেখানে না রেখে 100% পরিষ্কার হচ্ছে যা হচ্ছে? এটি আপনার কোড সম্পাদন করার ক্ষমতার উপর আক্ষরিক কোনও প্রভাব ফেলবে না।