Well, as goes with any Object Oriented Programming language the OOP conctepts are always a good practice. This is not specific to WinForms.
Introduction to Object Oriented Programming Concepts (OOP) and More[
^]
Principles of OOD (SOLID)[
^]
Now when building applications
multi-layered architecture[
^] keeps your data, business and presentation logic apart from each other. Actually the
multi-tiered architecture[
^] is also considered best practice (kind of extends or implements SOLID).
Now how does such stuff work in the presentation layer? For this there are a couple of well known patterns. In WinForms (but also web development) we have mostly
MVC (Model View Controller)[
^] and
MVP (Model View Presenter)[
^].
Here are some interesting discussions about the pro's and cons to both approaches in WinForms:
WinForms Model View Presenter[
^]
MVC vs. MVP for a WinForms app[
^]
Is MVC/MVP an anti-patterns in WinForms?[
^]
Selecting an MVC/MVP Implementation for a WinForms Project[
^]
Model-View-Presenter (MVP) Design Pattern with .NET - WinForms vs. ASP.NET WebForms[
^]
Pick a few :)
I hope that gives you some idea's to best practices, writing maintainable and flexible code etc.
By the way, what also helps towards this goal is keeping your code consistent.
Naming conventions and programming standards[
^] help others to understand your code.
Hope it helps! :)