Sto creando un software che gira su una macchina che esegue più test su un prodotto costruito nella mia azienda. Sto anche cercando di migliorare la mia codifica e recentemente ho studiato i modelli di progettazione e ho visto come posso applicarli al mio codice.
La parte che sto esaminando attualmente è la sequenza di test effettiva. Al momento il mio codice sembra simile a questo
public class TaskItem
{
public string TaskName {get;set;}
public DateTime StartTaskDateTime {get;set;}
public DateTime EndTaskDateTime {get;set;}
public Funct<bool> TaskFunction {get;set;}
public bool Execute()
{
StartDateTime = DateTime.Now;
var taskResult = TaskFunction.Invoke();
EndDateTime = DateTime.Now;
return taskResult;
}
}
Quindi la mia classe che crea la sequenza e la esegue è come questa
List<TaskItem> TestTaskItems = new List<TaskItem>();
public void BuildTestSquence()
{
TestTaskItems.Add(new TaskItem()
{
TaskFunction = () =>
{
// Do some Stuff
}
};
// ... add more task items
}
public bool RunTestSequnce()
{
foreach(var taskItem in TestTaskItems)
{
if(!taskItem.Execute())
{
return false;
}
}
return true;
}
Poiché il metodo BuildTestSquence
può essere aggiunto ovunque tra 1 attività e 100 attività, è possibile immaginare che il metodo possa contenere molto codice.
Nel mio codice attuale ho corrente 400 linee di codice in quel metodo.
Mi sto solo chiedendo se quello che ho fatto sia davvero il modo giusto per farlo.
Stavo pensando che forse il Chain of Responsibility
potrebbe essere un'idea, e se è così, non sono troppo sicuro sul modo migliore per implementarlo. Da quanto ho visto finora, la maggior parte degli esempi mostra che passi in un oggetto e ogni catena fa qualcosa con questo oggetto prima di decidere se passarlo o meno. Non passerò in nessun oggetto.