Last time I asked the question “How are you building WinForms applications?” just to get a sense of how everyone else is doing things. Here’s my tabulation of results with some comments below. I had to apply some interpretation here, so take the numbers with a grain of salt. Besides, it’s also a little bogus to tabulate because I’ll use a combination of Passive View, Supervising Controller, and Presentation Model within the same application depending upon the screen. Plenty of you said the same.
Composite Application Block: 4
Presentation Model or Model-View-ViewModel: 5
Passive View (I’m including Presenter First in this bucket): 8
Supervising Controller: 11
Legacy Code ported from VB6 that’s not my Fault!: 6
plus one vote for Wendy‘s View to Command wiring.
Lots of folks doing Model centric validation. I was pleasantly surprised by that, but shouldn’t have been.
The decisions seem to be based on the logical things. If you trust data binding or at least think it’s a time saver you’re more likely to choose Presentation Model or Supervising Controller. If you’re paranoid about test coverage, you pick Passive View.
If you ported from VB6 you’re out of luck. When I was coding VB6 I didn’t have a clue about View/Controller separation, and I’d bet the mass majority of my peers were in the same predicament there.
Next time, I’m going to try to compile a list of what everybody thought was hard and see if I can connect some links and patterns to some of it. I was glad to see I wasn’t the only person unhappy enough with Data Binding to go their own way.