Código de inicialização em um aplicativo WinForms - Program.cs ou MainForm?

Eu tenho um aplicativo do Windows Forms que atualmente carrega um banco de dados na inicialização. O fluxo é assim:

Program.cs => Application.Run (new MainForm ()); => Construtor MainForm => Abrir Banco de Dados

Então basicamente o MainForm contém todos os bits e partes que fazem o aplicativo rodar, enquanto o Program.cs é apenas um esboço. Atualmente, o nome do banco de dados carregado é codificado e desejo adicionar funcionalidade para especificar o nome do banco de dados a ser carregado por meio da linha de comando. Ao mesmo tempo, quero acrescentar a capacidade de fazer alguns Testes Unitários ou até mesmo Injeção de Dependência mais tarde, então me pergunto qual abordagem é recomendada?

Altere o construtor do MainForm para aceitar alguns parâmetros. Em seguida, altere Program.cs para ler a linha de comando e altere a chamada paraApplication.Run(new MainForm()); adequadamenteDeixe Program.cs e a assinatura do construtor intocado e verifique a linha de comando no construtor do MainForm

O método um parece ser mais limpo, pois permitiria que um executor de teste criasse o MainForm com um banco de dados de teste, mas como normalmente não sou um desenvolvedor do WinForms, não sei se poderia haver efeitos colaterais de não ter um construtor padrão no Forma principal ou se existe uma abordagem melhor?

questionAnswers(3)

yourAnswerToTheQuestion