আমি ব্যক্তিগতভাবে বিভিন্ন প্রোগ্রামিং ভাষার দ্বারা প্রদত্ত "পাস বাই রেফারেন্স" কার্যকারিতা অপছন্দ করি। সম্ভবত এটি কারণ যে আমি কেবলমাত্র কার্যকরী প্রোগ্রামিংয়ের ধারণাগুলি আবিষ্কার করছি, তবে পার্শ্ব প্রতিক্রিয়া সৃষ্টিকারী ক্রিয়াকলাপগুলি (রেফারেন্স দ্বারা পাস করা প্যারামিটারগুলির মত হ'ল) দেখলে আমি সর্বদা গোসাম্পস পাই। আমি ব্যক্তিগতভাবে দৃ single়ভাবে "একক দায়িত্ব" নীতিটি গ্রহণ করি।
আইএমএইচও, কোনও ফাংশনের রিটার্ন কীওয়ার্ড ব্যবহার করে কেবল একটি ফলাফল / মান দেওয়া উচিত। কোনও প্যারামিটার / যুক্তি সংশোধন করার পরিবর্তে, আমি কেবল পরিবর্তিত প্যারামিটার / যুক্তি মানটি ফিরিয়ে আনব এবং যে কোনও পছন্দসই পুনরায় নিয়োগগুলি কলিং কোড পর্যন্ত রেখে দেব।
তবে কখনও কখনও (আশা করি খুব কদাচিৎ) একই ফাংশন থেকে দুটি বা ততোধিক ফলাফলের মান ফেরত দেওয়া প্রয়োজন। সেক্ষেত্রে আমি সেই সমস্ত ফলাফলকে একটি কাঠামো বা অবজেক্টে অন্তর্ভুক্ত করতে পছন্দ করব। আবার, কোনও পুনরায় নিয়োগ প্রক্রিয়াজাতকরণ কলিং কোড পর্যন্ত হওয়া উচিত।
উদাহরণ:
মনে করুন আর্গুমেন্ট তালিকায় 'রেফ' এর মতো একটি বিশেষ কীওয়ার্ড ব্যবহার করে প্যারামিটারগুলি সমর্থিত হবে। আমার কোডটি এর মতো দেখতে পারে:
//The Function
function doSomething(ref value) {
value = "Bar";
}
//The Calling Code
var value = "Foo";
doSomething(value);
console.log(value); //Bar
পরিবর্তে, আমি আসলে এই জাতীয় কিছু করতে পছন্দ করব:
//The Function
function doSomething(value) {
value = "Bar";
return value;
}
//The Calling Code:
var value = "Foo";
value = doSomething(value); //Reassignment
console.log(value); //Bar
যখন আমার একধরণের ফাংশন লিখতে হবে যা একাধিক মান প্রদান করে, আমি রেফারেন্স দ্বারা পাস হওয়া পরামিতিগুলি ব্যবহার করব না। সুতরাং আমি এই জাতীয় কোড এড়াতে হবে:
//The Function
function doSomething(ref value) {
value = "Bar";
//Do other work
var otherValue = "Something else";
return otherValue;
}
//The Calling Code
var value = "Foo";
var otherValue = doSomething(value);
console.log(value); //Bar
console.log(otherValue); //Something else
পরিবর্তে, আমি আসলে এই দুটি জিনিসের ভিতরে নতুন দুটি মান ফিরিয়ে দিতে পছন্দ করব:
//The Function
function doSomething(value) {
value = "Bar";
//Do more work
var otherValue = "Something else";
return {
value: value,
otherValue: otherValue
};
}
//The Calling Code:
var value = "Foo";
var result = doSomething(value);
value = result.value; //Reassignment
console.log(value); //Bar
console.log(result.otherValue);
এই কোড উদাহরণগুলি বেশ সরল, তবে এটি মোটামুটিভাবে দেখায় যে আমি ব্যক্তিগতভাবে কীভাবে এই জিনিসগুলি পরিচালনা করব। এটি আমাকে বিভিন্ন জায়গায় সঠিক জায়গায় রাখতে সহায়তা করে।
শুভ কোডিং। :)