Responsabilità singola della classe del programma in C #

3

Non seguo rigorosamente SOLID in generale, ma cerco di fare in modo di separare le responsabilità delle mie lezioni.

Stavo sviluppando una piccola app con un servizio di Windows basato su Topshelf e mi sono reso conto che non capisco cosa dovrebbe fare la classe Program . Ovviamente potrei probabilmente spingere la maggior parte del codice in Main , ma qual è la ragionevole quantità di responsabilità che questa classe dovrebbe avere?

Le mie opzioni:

  1. Program è solo una custodia per Main , che è solo un punto di accesso per l'app, e il resto del codice dovrebbe essere spostato in una classe separata.

  2. Main dovrebbe essere solo una radice di composizione dell'applicazione, con una classe separata che gestisce il flusso di lavoro generale (come gli arresti regolari sulle eccezioni) e le chiamate alla logica aziendale.

  3. Un altro metodo statico in Program deve gestire la composizione e le chiamate alla classe dell'applicazione.

  4. Program è la classe del flusso di lavoro dell'applicazione e i suoi metodi non statici chiamano la logica aziendale, mentre Main è un punto di ingresso.

posta Heagon 05.10.2018 - 12:50
fonte

1 risposta

5

L'approccio che prendo è di visualizzare Program.Main come non testabile senza eseguire l'app. Pertanto, esso (e il resto di Program ) dovrebbe avere solo la responsabilità di impostare la composizione runtime e buttare via le cose. Tutto il resto dovrebbe esistere in altre classi in modo che possano essere testate, singolarmente o in altre composizioni non runtime, se necessario.

Se la composizione è semplice, mettila in Main , altrimenti chiama Main un metodo di composizione privato (o anche un'altra classe se davvero complessa) per eseguire quella composizione.

Quindi opterei per una combinazione di opzioni 2 e 3, a seconda delle dimensioni. Anche l'opzione 1 vale la pena di essere presa in considerazione quando la composizione avviene in un'altra classe. Non fare l'opzione 4 a mio avviso.

    
risposta data 05.10.2018 - 13:09
fonte

Leggi altre domande sui tag