Sto scrivendo il codice che importa i valori da un file CSV. Come parte del processo di importazione, ho bisogno di scrivere avvisi su un log (visualizzato sullo schermo) quando i valori nel file CSV non sono validi.
Il metodo seguente accetta un valore stringa e un valore massimo da verificare.
La mia preoccupazione è che il metodo faccia due cose: analizza un valore e genera voci di registro da visualizzare. Ciò viola il principio della responsabilità unica e, in caso affermativo, cosa si può fare al riguardo senza duplicare la stessa logica di controllo del numero in due metodi?
private double? GetValidDoubleInMinMaxRange(string importVal, double? maxScore)
{
if(importVal == null)
{
return null;
}
double val;
if(double.TryParse(importVal, out val))
{
if(val < 0)
{
AppInstance.Log.Add(this, LogLevel.Warning, Resources.DataScreenImport_ValueMustBePositive);
return null;
}
if(maxScore.HasValue && val > maxScore.Value)
{
AppInstance.Log.Add(this, LogLevel.Warning, Resources.DataScreenImport_ValueGreaterThanMax);
return null;
}
return val;
}
else
{
AppInstance.Log.Add(this, LogLevel.Warning, Resources.DataScreenImport_ValueWasNotValidInt);
return null;
}
}