La cosa più astuta sarebbe comunque separare in maniera netta front-end e back-end del tuo programma, tenendo il back-end (la business logic, insomma) in una libreria separata, con cui il front-end comunica in qualche maniera. Oggi il front-end potrebbe essere un'applicazione Windows Forms, domani potresti riscriverlo in ASP.NET ottenendo un'applicazione web, riciclando tutto il codice di back-end scritto in passato.