কম্পিউটার বিজ্ঞানে কোনও ফাংশন বা এক্সপ্রেশনটির একটি পার্শ্ব প্রতিক্রিয়া বলে মনে হয় যদি এটি কিছু রাষ্ট্রকে পরিবর্তন করে বা কলিং ফাংশন বা বাইরের বিশ্বের সাথে পর্যবেক্ষণযোগ্য ইন্টারঅ্যাকশন করে।
উইকিপিডিয়া থেকে - সাইড এফেক্ট
গাণিতিক অর্থে একটি ফাংশন হ'ল ইনপুট থেকে আউটপুটে ম্যাপিং। কোনও ফাংশন বলার উদ্দেশ্যপ্রাপ্ত প্রভাবটি এটি দেয় যে ফলাফলটি ফেরত দেয় তা ইনপুটটি ম্যাপ করে। যদি ফাংশনটি অন্য কিছু করে তবে তা কোনও বিষয় নয়, তবে যদি এর এমন কোনও আচরণ থাকে যা আউটপুটটিতে ইনপুটটি ম্যাপ করে না তবে আচরণটি একটি পার্শ্ব প্রতিক্রিয়া হিসাবে পরিচিত।
আরও সাধারণ শব্দে, একটি পার্শ্ব প্রতিক্রিয়া এমন কোনও প্রভাব যা কনস্ট্রাক্টের ডিজাইনারের ইচ্ছাকৃত প্রভাব নয়।
প্রভাব কোনও অভিনেতাকে প্রভাবিত করে এমন কিছু। যদি আমি এমন কোনও ফাংশন কল করি যা আমার বান্ধবীকে ব্রেকআপ পাঠ্য বার্তা প্রেরণ করে, যা একাধিক অভিনেতা, আমাকে, তার, সেলফোন কোম্পানির নেটওয়ার্ক ইত্যাদিকে প্রভাবিত করে, পার্শ্ব-প্রতিক্রিয়া মুক্ত ফাংশন কল করার একমাত্র উদ্দেশ্য প্রভাবিতটি ফাংশনটির জন্য আমার ইনপুট থেকে আমাকে একটি ম্যাপিং ফেরত দিতে। অনেক দূরে:
public void SendBreakupTextMessage() {
Messaging.send("I'm breaking up with you!")
}
যদি এটি কোনও ক্রিয়াকলাপের উদ্দেশ্যে করা হয়, তবে কেবলমাত্র এটি করা উচিত শূন্যস্থান ফিরে আসা। যদি এটি পার্শ্ব-প্রতিক্রিয়া মুক্ত ছিল, এটি আসলে পাঠ্য বার্তাটি প্রেরণ করা উচিত নয়।
বেশিরভাগ প্রোগ্রামিং ভাষায়, গাণিতিক ক্রিয়াকলাপের জন্য কোনও কাঠামো নেই। কোনও নির্মাণের জন্য এটি ব্যবহারের উদ্দেশ্যে নয়। এজন্য বেশিরভাগ ভাষায় বলে যে আপনার কাছে পদ্ধতি বা পদ্ধতি রয়েছে। নকশা দ্বারা, এগুলি আরও অনেক প্রভাব করতে সক্ষম হতে পারে। প্রচলিত প্রোগ্রামিং পার্লেন্সে, কোনও পদ্ধতি বা পদ্ধতি কী ছিল তার উদ্দেশ্য সম্পর্কে সত্যিই কেউ পাত্তা দেয় না, তাই যখন কেউ বলে যে এই ফাংশনটির পার্শ্ব-প্রতিক্রিয়া রয়েছে, তখন তাদের কার্যকরভাবে বোঝানো হয়, এই গঠনটি গাণিতিক ফাংশনের মতো আচরণ করে না। এবং যখন কেউ বলে যে এই ফাংশনটি পার্শ্ব-প্রতিক্রিয়া মুক্ত, তাদের অর্থ, এই গঠনটি কার্যকরভাবে একটি গাণিতিক ফাংশনের মতো আচরণ করে।
একটি খাঁটি ফাংশন সংজ্ঞা দ্বারা সর্বদা পার্শ্ব প্রতিক্রিয়া মুক্ত থাকে। একটি খাঁটি ফাংশন, এই ফাংশনটি বলার একটি উপায়, যদিও এটি এমন একটি কনস্ট্রাক্ট ব্যবহার করছে যা আরও বেশি প্রভাবের অনুমতি দেয়, কেবল তার গাণিতিক ক্রিয়াকলাপের সমান প্রভাব রয়েছে।
আমি কাউকে চ্যালেঞ্জ জানাই যে কখন আমাকে বলুন পার্শ্ব-প্রতিক্রিয়া মুক্ত ফাংশনটি শুদ্ধ হবে না। খাঁটি এবং পার্শ্ব প্রতিক্রিয়া মুক্ত শব্দটি ব্যবহার করে বাক্য প্রসঙ্গে প্রাথমিক উদ্দেশ্যপ্রণালী যদি কোনও ফাংশনের গাণিতিক অভিপ্রায়িত প্রভাব না হয়, তবে সেগুলি সর্বদা সমান।
যেমন, কখনও কখনও, যদিও খুব কমই হয়, এবং আমি বিশ্বাস করি এটি গ্রহণযোগ্য উত্তরে হ'ল পার্থক্যটির অভাব এবং এছাড়াও মানুষকে বিভ্রান্ত করা (তবে এটি সবচেয়ে সাধারণ অনুমান নয়) তবে কখনও কখনও এটি ধরে নেওয়া হয় যে কোনও প্রোগ্রামিং ফাংশনের উদ্দেশ্যপ্রণালী প্রভাব আউটপুটে ইনপুট মানচিত্র করতে, যেখানে ইনপুটটি ফাংশনের সুস্পষ্ট পরামিতিগুলিতে সীমাবদ্ধ নয়, তবে আউটপুট সুস্পষ্ট রিটার্ন মানকে সীমাবদ্ধ করে। যদি আপনি ধরে নেন যে এটি ইচ্ছাকৃত প্রভাব, তবে কোনও ফাইল পড়া এবং ফাইলে যা রয়েছে তার উপর ভিত্তি করে একটি পৃথক ফলাফল প্রত্যাবর্তন করা একটি ফাংশন এখনও পার্শ্ব-প্রতিক্রিয়ামুক্ত, যেমন আপনি নিজের উদ্দেশ্যযুক্ত প্রভাবের অন্যান্য স্থান থেকে ইনপুটগুলি আসতে দিয়েছিলেন।
তাহলে, কেন এটি গুরুত্বপূর্ণ?
এটি নিয়ন্ত্রণ এবং রাখার বিষয়ে সমস্ত কিছু about যদি আপনি কোনও ফাংশন কল করেন এবং এটি অন্য কোনও কাজ করে তবে একটি মান ফেরত দেয়, এটির আচরণ সম্পর্কে যুক্তি করা শক্ত। এটি কী করছে তা অনুমান করার জন্য এবং এর যথার্থতার জন্য আপনাকে আসল কোডটির জন্য ফাংশনের ভিতরে যেতে হবে। আদর্শ পরিস্থিতিটি হ'ল ফাংশনটি কী কী ইনপুট ব্যবহার করছে এবং এটি অন্য কিছু করছে না তার পক্ষে আউটপুট ফিরিয়ে দেওয়ার বিষয়টি খুব স্পষ্ট এবং সহজেই জানা যায়। আপনি এটিকে কিছুটা শিথিল করতে পারেন, এবং বলতে পারেন যে এটি কোন ইনপুটটি ব্যবহার করছে তা জেনে রাখা ঠিক তেমন সহায়ক নয় যে এটি অন্য কোনও কিছু করছে না যারপরে কোনও মান ফেরত দেওয়ার বিষয়ে আপনি সচেতন নাও হতে পারেন, তাই সম্ভবত আপনি কেবল প্রয়োগের সাথে সন্তুষ্ট এটি অন্য কিছু না করে এরপরে ম্যাপ ইনপুট, যেখানেই তা এখান থেকে আউটপুট নিয়ে আসে তা বিবেচনা করে না।
প্রায় সব ক্ষেত্রেই, কোনও প্রোগ্রামের মূল বিষয়টি হ'ল বাইরে আসা জিনিসগুলিতে ম্যাপিংয়ের পরে অন্যান্য প্রভাবগুলি থাকে। পার্শ্ব-প্রতিক্রিয়াটি নিয়ন্ত্রণ করার ধারণাটি হল আপনি কোডটি এমনভাবে সাজিয়ে তুলতে পারেন যা বোঝা এবং কারণ সম্পর্কে আরও সহজ। আপনি যদি সমস্ত পার্শ্ব প্রতিক্রিয়া একসাথে রাখেন তবে খুব স্পষ্ট এবং কেন্দ্রিয় জায়গায় এমন জায়গাটি কোথায় পাওয়া উচিত এবং এটি বিশ্বাস করা সহজ যে এই সমস্ত ঘটছে, আর কিছুই নয়। আপনার যদি ইনপুটটিও খুব স্পষ্ট থাকে তবে এটি বিভিন্ন ইনপুটটির আচরণটি পরীক্ষা করতে সহায়তা করে এবং এটি ব্যবহার করা আরও সহজ, যেহেতু আপনাকে অনেকগুলি জায়গায় বিভিন্ন জায়গায় ইনপুট পরিবর্তন করার দরকার নেই, এমন কিছু যা স্পষ্ট নাও হতে পারে, কেবল আপনি যা চান তা পেতে
যেহেতু একটি প্রোগ্রামের আচরণ বোঝার, যুক্তি এবং নিয়ন্ত্রণ নিয়ন্ত্রণে সবচেয়ে সহায়ক হ'ল সমস্ত ইনপুটকে একসাথে এবং স্পষ্টভাবে গোষ্ঠীবদ্ধ করা এবং পাশাপাশি সমস্ত পার্শ্ব-প্রতিক্রিয়াকে একত্রিত করা এবং সুস্পষ্ট করা, সাধারণত লোকেরা যখন বলে তখন এটি সম্পর্কে পার্শ্ব-প্রভাব, খাঁটি, ইত্যাদি
যেহেতু সর্বাধিক সহায়ক হ'ল পার্শ্ব-প্রতিক্রিয়া এবং তাদের স্পষ্টবাদী গোষ্ঠীকরণ, কখনও কখনও লোকেরা কেবল এটিই বোঝায় এবং এটি খাঁটি নয়, তবে এটি "পার্শ্ব-প্রতিক্রিয়া মুক্ত" বলে আলাদা করে। তবে পার্শ্ব-প্রভাব অনুমিত "অভিযুক্ত প্রাথমিক প্রভাব" এর সাথে সম্পর্কিত, সুতরাং এটি একটি প্রাসঙ্গিক শব্দ। আমার যে এটি পাওয়া যায় এটি প্রায়শই ব্যবহৃত হয় না, যদিও আশ্চর্যজনকভাবে এটি এই থ্রেডে প্রচুর আলোচনা করা হয়।
পরিশেষে, আইডেম্পোটেন্ট মানে এই ফাংশনটিকে একই ইনপুটগুলির সাথে বহুবার কল করা (তারা যেখান থেকে আসে তা বিবেচনা করে না) সর্বদা একই প্রভাবের (পার্শ্ব প্রতিক্রিয়া বা না) ফলাফল করে।