আমি প্রায়শই নিজেকে এই জাতীয় ফাংশনগুলি লেখার মতো দেখতে পাই কারণ এগুলি আমাকে সহজেই ডেটা অ্যাক্সেসকে উপহাস করার অনুমতি দেয় এবং এখনও কোনও স্বাক্ষর সরবরাহ করে যা কোন ডেটা অ্যাক্সেস করতে হবে তা নির্ধারণের জন্য পরামিতিগুলি গ্রহণ করে।
public static string GetFormattedRate(
Func<string, RateType>> getRate,
string rateKey)
{
var rate = getRate(rateKey);
var formattedRate = rate.DollarsPerMonth.ToString("C0");
return formattedRate;
}
অথবা
public static string GetFormattedRate(
Func<RateType, string> formatRate,
Func<string, RateType>> getRate,
string rateKey)
{
var rate = getRate(rateKey);
var formattedRate = formatRate(rate);
return formattedRate;
}
তারপরে আমি এটিকে কিছু ব্যবহার করি:
using FormatterModule;
public static Main()
{
var getRate = GetRateFunc(connectionStr);
var formattedRate = GetFormattedRate(getRate, rateType);
// or alternatively
var formattedRate = GetFormattedRate(getRate, FormatterModule.FormatRate, rateKey);
System.PrintLn(formattedRate);
}
এটি কি সাধারণ অনুশীলন? আমার মনে হচ্ছে আমার মতো আরও কিছু করা উচিত
public static string GetFormattedRate(
Func<RateType> getRate())
{
var rate = getRate();
return rate.DollarsPerMonth.ToString("C0");
}
তবে এটি খুব ভালভাবে কাজ করছে বলে মনে হচ্ছে না কারণ প্রতি হারের ধরণের জন্য পদ্ধতিতে পাস করার জন্য আমাকে একটি নতুন ফাংশন তৈরি করতে হবে।
মাঝে মাঝে আমার মনে হয় আমার করা উচিত
public static string GetFormattedRate(RateType rate)
{
return rate.DollarsPerMonth.ToString("C0");
}
তবে এটি কোনও আনয়ন এবং ফর্ম্যাট পুনরায় ব্যবহারের যোগ্যতা কেড়ে নেবে বলে মনে হচ্ছে। যখনই আমি আনতে এবং ফর্ম্যাট করতে চাই আমাকে দুটি লাইন লিখতে হবে, একটি আনতে হবে এবং একটিকে বিন্যাস করতে হবে।
ফাংশনাল প্রোগ্রামিং সম্পর্কে আমি কী মিস করছি? এটি কি এটি করার সঠিক উপায়, বা এর থেকে আরও ভাল প্যাটার্ন যা উভয়ই বজায় রাখা এবং ব্যবহার করা সহজ?
GetFormattedRate()
, কোনও প্যারামিটার হিসাবে ফর্ম্যাট করার হারকে ফিরিয়ে দেয় এমন কোনও ফাংশন গ্রহণ করার বিপরীতে?
closures
আপনি যেখানে প্যারামিটারটি কোনও ফাংশনেই পাস করেন সেখান থেকে আরও ভাল উপায় ব্যবহার করা হচ্ছে , যার বিনিময়ে আপনাকে সেই নির্দিষ্ট পরামিতিটির উল্লেখ করে একটি ফাংশন দেয়। এই "কনফিগার করা" ফাংশনটি ফাংশনটির প্যারামিটার হিসাবে পাস হবে, যা এটি ব্যবহার করে।