ฉันมักจะพบว่าตัวเองกำลังเขียนฟังก์ชั่นที่มีลักษณะเช่นนี้เพราะพวกเขาทำให้ฉันสามารถเข้าถึงข้อมูลได้อย่างง่ายดายและยังมีลายเซ็นที่ยอมรับพารามิเตอร์เพื่อกำหนดข้อมูลที่จะเข้าถึง
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
ตำแหน่งที่คุณส่งพารามิเตอร์เองไปยังฟังก์ชันซึ่งเป็นการตอบแทนให้ฟังก์ชันที่อ้างอิงพารามิเตอร์พารามิเตอร์นั้น ฟังก์ชัน "กำหนดค่า" นี้จะถูกส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชันซึ่งใช้งาน