
27
JulRedux
এর একটি টিওটোরিয়াল থেকে আমি প্রথম পিওর ফাংশনের নাম শুনি। তখনই আমার মাথায় ঘুরপাক খেতে থাকে, এই পিওর ফাংশনটা আবার কি? এটা দেখতে কেমন? এটা কিভাবে কাজ করে? আর কেনইবা জাভাস্ক্রিপ্টে পিওর ফাংশন থাকা লাগবে? তো যেই ভাবা সেই গুগলে সার্চ দেয়া এবং তার পর আমি পিওর ফাংশন এর ব্যপারে যা জানতে পেরেছি, আমি নিশ্চিত যে আপনারা বেশিরভাগই পিওর ফাংশন নিয়ে কাজ করেছেন এবং আমার এই লিখা পড়ে যখন বুঝতে পারবেন যে পিওর ফাংশনটা আসলে কি তখন খুশিতে লাফ দিয়ে উপরের সিলিং ভেঙ্গে ফেললে কেও দায়ি থাকবে না। তো কথা না বাড়িয়ে চলুন আমাদের মাথায় ঘুরতে থাকা প্রশ্নের উত্তরগুলো জেনে নিই।
পিওর ফাংশন জিনিসটা আসলে কী?
পিওর ফাংশনের কিছু বৈশিষ্ট হলোঃ
- জাভাস্ক্রিপ্ট এর ক্ষেত্রে এটি জাভাস্ক্রিপ্ট এ সাপোর্টেট যেকোনো ফাংশন রুল ফলো করে লিখা যায়।
- এর মধ্যে যদি আপনি একই
Value
বার বার পাস করেন তাহলে সে আপনাকে প্রত্যেকবার একইResult
রিটার্ন করবে। - এই ফাংশন এর ব্লকের মধ্যে কোনো
Side Effect
করা যাবে না। বিশেষ করেParameter/Input
এর সাথে।
শুধুমাত্র কোনো ফাংশনের বৈশিষ্ট যদি এগুলো হয় তখনই তাকে আমরা পিওর ফাংশন বলতে পারি।
লক্ষনীয় কিছু সাইড ইফেক্ট।
সাইড ইফেক্ট বলতে এমন কিছু Function
বা Operation
বা Expression
কে বুঝায় যা কোনো ফাংশন এর Local Scope
এ থেকে তার Outside Scope
এর সাথে কাজ করে। তবে কোনো ফাংশন এর মধ্যে যদি অন্য কোনো পিওর ফাংশন ব্যবহার করা হয় তাহলে ফাংশনটি পিওর থাকে।
নিচে কিছু Side Effect
এর উদাহারন দেয়া হলোঃ
Math.random()
ফাংশন,- কোনো ভ্যালু / আরগুমেন্ট
Mutating
করা, - স্ক্রিনে কোনো কিছু
Print
করা, http request
করা।- কোনো
DOM Query
সম্পন্ন করা।
এটা দেখতে কেমন?
এখনো যারা মাথা চুলকাচ্ছেন এবং চুল ছিড়ে ফেলছেন, এই মলম লাগানোর পর আশা করি সব চুল্কানো চলে যাবে। তো চলুন কিছু Pure
এবং impure
ফাংশনের কিছু উদাহরন দেখি।
পিওর ফাংশনঃ
//Example 1
const add = (a, b) => a+b;
console.log(add(4, 6)); //10//Example 2
function pow(a){
return a * a;
}
console.log(pow(4)); //16
এখানে //Example 1
এ আমরা দুটি সংখ্যা যোগ করার জন্য add
নামক একটি এরো ফাংশন তৈরি করেছি, যার কাজ হলো দুটি প্যারামিটার এর ভ্যালু যোগ করে তার যোগফল রিটার্ন করা। তেমনি //Example 2
তে একটি সংখার Square
বের করার জন্য pow
নামক একটি ফাংশন তৈরি করা হয়েছে। তো ফাংশন দুটোতে মুলত কিছু প্যারামিটার পাস করা হয়েছে এবং ঐ প্যারামিটার গুলোর উপর কোনো অপারেশন চালিয়ে একটি ভ্যালু রিটার্ন করা হয়েছে। এখন আমরা যদি ভালো করে খেয়াল করি তাহলে দেখবো ফাংশনের মধ্যে এর আরগুমেন্ট গুলোকে Modify or Mutating
করা হয় নি অথবা কোনো Side Effect
ও সম্পন্ন করা হয় নি। ফলে আমরা যদি বার বার Same Value
পাস করি তাহলে আমরা প্রত্যেকবারই Same Result
রিটার্ন পাবো। সুতরাং এটি একটি পিওর ফাংশন।
ইমপিউর ফাংশনঃ
function mul(b){
let a = Math.random();
return a * b;
}
console.log(mul(6)); // Anything
এই ফাংশনটি যদি আমরা লক্ষ্য করি তাহলে দেখবো ফাংশনটির ব্লকে Math.random()
নামক একটি Side Effect
রান করা হয়েছে যা আমাদের Random Value
প্রদান করে। Math.random()
ব্যবহার করার ফলে a
ভ্যারিয়েবল এর মান একেকবার একেক রকম হবে, যার ফলে আমরা ফাংশনে যদি Same Value
বার বার প্যারামিটার হিসেবে দিই তাহলে একেকবার একেক রকম ভ্যালু রিটার্ন করবে যা পিওর ফাংশনের বিপরীত।
পিওর ফাংশনের সুবিধা।
জাভাস্ক্রিপ্টে পিওর ফাংশন React.js
এবং Redux
এ প্রচুর পরিমাণে ব্যবহার করা হয়। তবে আমরা চাইলে এটি Vanilla Javascript
এ ব্যাবহার করতে পারি। আবার চাইলে impure
ফাংশনের মধ্যেও ব্যবহার করতে পারি।
পিওর ফাংশন ব্যবহারে আপনি যেই সুবিধাগুলো পেতে পারেনঃ
- এটির ব্যবহার প্রোগ্রামের কোডকে আরও ক্লিন করে তোলে।
Side Effect
না থাকার কারণেMutating Tracking
করা সহজ হয়।- সবসময় কাঙ্খিত ভ্যালু রিটার্ন করার ফলে প্রোগ্রাম
Testing
এ ঝামেলা পোহাতে হয় না। - এটির ব্যবহার
State Management
আরও সহজতর করে তোলে। - আপনি যেহেতু আন্দাজ করতে পারেন আপনার ফাংশন এর আউটপুট কেমন হবে। সুতরাং আপনি সহজেই আপনার প্রোগ্রামকে
Restructure
করতে পারবেন।
02 Comment
mabiya khanJune 28, 2018 at 4:03 PM
Enim lacinia ultrices luctus ut nisl nulla, nobis proin amet, non lorem duis at. Eleend diam sed, nulla nulla nibh adipiscing blandit nunc, vitae sed
mabiya khanJune 28, 2018 at 4:03 PM
Enim lacinia ultrices luctus ut nisl nulla, nobis proin amet, non lorem duis at. Eleend diam sed, nulla nulla nibh adipiscing blandit nunc, vitae sed