Spesso mi trovo a scrivere funzioni che sembrano così perché loro permettimi di semplificare facilmente l'accesso ai dati e di fornire comunque una firma che accetti i parametri per determinare quali dati accedere.
public static string GetFormattedRate(
Func<string, RateType>> getRate,
string rateKey)
{
var rate = getRate(rateKey);
var formattedRate = rate.DollarsPerMonth.ToString("C0");
return formattedRate;
}
o
public static string GetFormattedRate(
Func<RateType, string> formatRate,
Func<string, RateType>> getRate,
string rateKey)
{
var rate = getRate(rateKey);
var formattedRate = formatRate(rate);
return formattedRate;
}
Quindi lo uso in questo modo:
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);
}
Questa è una pratica comune? Mi sento come se dovessi fare qualcosa di più simile
public static string GetFormattedRate(
Func<RateType> getRate())
{
var rate = getRate();
return rate.DollarsPerMonth.ToString("C0");
}
Ma non sembra funzionare molto bene perché dovrei fare una nuova funzione per passare al metodo per ogni tipo di tariffa.
A volte mi sento come dovrei fare
public static string GetFormattedRate(RateType rate)
{
return rate.DollarsPerMonth.ToString("C0");
}
Ma ciò sembra togliere qualsiasi possibilità di recupero e formattazione. Ogni volta che voglio recuperare e formattare devo scrivere due righe, una da scaricare e una da formattare.
Cosa mi manca della programmazione funzionale? È questo il modo giusto per farlo, o esiste un modello migliore che sia facile da mantenere e utilizzare?