Dire che ho una classe di calcolatrice simile a questa:
using System;
public class CalCulator
{
public int Square(int num)
{
return num*num;
}
public int Add(int num1, int num2 )
{
return num1 + num2;
}
public double Add(double num1, double num2 )
{
return num1 + num2;
}
public int Multiply(int num1, int num2 )
{
return num1 * num2;
}
public int Subtract(int num1, int num2 )
{
if ( num1 > num2 )
{
return num1 - num2;
}
return num2 - num1;
}
}
Questo mostra come usare la classe Calculator dal programma Main C #.
public class Class1
{
static void Main()
{
CalCulator sq = new CalCulator();
Console.WriteLine( sq.Square(8).ToString());
Console.WriteLine( sq.Add(8.3, 9.24).ToString());
Console.WriteLine( sq.Multiply(5,8).ToString());
Console.WriteLine( sq.Subtract(22, 42).ToString());
}
}
Fonte (compresa la mancanza di formattazione): Una semplice classe di calcolatori di Mahesh Chand
Diciamo che tutti i metodi accettano due argomenti (mi rendo conto che questo non è vero nell'esempio che ho fornito poiché contiene un metodo chiamato: Square, che accetta un argomento).
Sarebbe "meglio" utilizzare un oggetto dati che raggruppa i due argomenti insieme? Credo che ciò aiuterebbe con la testabilità (inversione di controllo, iniezione di dipendenza, eccetera)?
Esiste un numero minimo di argomenti richiesti prima di utilizzare un oggetto dati per passarli a un metodo?
Aggiorna
La calcolatrice forse non è la migliore analogia per spiegare la mia domanda. Supponiamo che abbia una funzione che restituisca un elenco come segue:
public List<PercentageValues> CalculateTaxGroupedByPercentage()
{
}
public class PercentageValue()
{
private int decimal _percentage;
private readonly decimal _value;
public PercentageValue(int percentage, decimal value)
{
_percentage = percentage;
_value = value;
}
}
Ad esempio, se una persona ha uno stipendio di £ 60.000, allora CalculateTaxGroupedByPercentage () restituirà il seguente elenco:
List<PercentageValue> list = new List<PercentageValue>();
list.Add(new PercentageValue(20,45000);
list.add(new PercentageValue(40,15000);
Due domande:
1) È un tipo di DTO / Valore valido? 2) Qual è la differenza tra un DTO e un tipo di valore? Pensavo che un DTO fosse per il trasferimento di dati su domini applicativi, ad es. un servizio web che restituisce una classe a un cliente. In tal caso questo non è un DTO.