Click here to Skip to main content
12,554,587 members (75,445 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


44 bookmarked

Some Best Practices for C# Application Development

, 17 Oct 2010 CPOL
Rate this:
Please Sign up or sign in to vote.
Some C# best coding practices that I learnt over the last few years

imageFew days ago, in one my earlier posts, I discussed about “Some Best Practices for Silverlight Application Development (XAML)” which got a huge hit by my readers. I got a lot of feedback on that too. Someone from the community also suggested that I write some best coding practices on C#. This struck my mind and hence I decided to write some best practices about C# coding here from my past few years of experience.

For the past few years, I learned a lot and tried to share the best of my knowledge to others who are new in the software development field. I contribute this post to those fellow members. Hope, I will get more feedback and/or suggestions here too.

I liked C# programming when I started with .NET technology. I never tried to write code in VB.NET as I decided my career on that. When I was new to this field, I made a lot of mistakes and from those mistakes I learnt more things. There’s a proverb: “Mistakes make you learn more & more…”. My career was one of them. Also there’s a proverb: “There’s no end to learning in life. Each second, a person can learn”. So, if there are any more suggestions, please share those with me. It will help me and others to learn more in a proper way.

One second, there are various posts available on the internet regarding the same topic. If you do a Google, you will get a number of them. But these collections are based on my experiences, those I learnt and thought of sharing.

Let’s stop here and start discussing the Best Coding Practices of C# application development. Here are some of them:

  • Use proper Naming Conventions
    • Always use Camel or Pascal naming format
    • Avoid all uppercase or lowercase names
    • Never use a name which begins with numeric character
    • Always prefer meaningful names for your class, property, method, etc.
    • Never build different names varied by capitalization
    • Don’t use the same name used in .NET Framework
    • Avoid adding prefixes or suffixes for your identifiers
    • Always use “I” as prefix for Interfaces
    • Always add “Exception” as suffix for your custom exception class
    • Never prefix or suffix the class name to its property name
    • Prefix “Is”, “Has” or “Can” for boolean properties
    • Don’t add prefix for your controls
  • Decide between Value Types and Reference Types
  • Always Use Properties instead of public variables
  • Use Nullable data types whenever required
  • Prefer Runtime Constants over Compile time Constants
  • Prefer “is” and “as” operators while casting
  • Prefer string.Format() or StringBuilder for string concatenation
  • Use Conditional attributes when you need them
  • Use ‘0’ (zero) as default value enum value types
  • Chose between Equals() and Equal (==) operator
  • Always prefer the foreach(…) loop
  • Initialize member variables at the time of assignment
  • Initialize static member variables with static constructors
  • Use constructor chaining whenever possible
  • Minimize boxing & unboxing of objects
  • Properly utilize try/catch/finally blocks
  • Catch only that Exception which you can handle
  • Use IDisposable interface
  • Utilize LazyInitializer in most of the cases
  • Split your logic in several small and simple methods
  • Try to use Patterns & Practices like MVP/MVC/MVVM
  • Always prefer DataBinding to populate values in the UI


Read them here:


- Initial Post (20th September, 2010)

- Explanation of points (17th October, 2010) 

         Explanation of those points are published as an Article. Read it from here:

Appreciate some more points if you have to include in this article.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

_Kunal Chowdhury_
Software Developer (Senior)
India India
Kunal Chowdhury is a Microsoft "Windows Platform Development" MVP (Most Valuable Professional), a Codeproject Mentor, Telerik Developer Expert, Nokia Developer Champion, Windows 10 Champion, Microsoft Rockstar, Speaker in various Microsoft events, Author, passionate Blogger and a Software Engineer by profession.

He is currently working in an MNC located in India. He has a very good skill over XAML, C#, Silverlight, Windows Phone, WPF and Windows Store (WinRT) app development. He posts his findings, articles, tutorials in his technical blog and CodeProject.

Technical Blog:
Twitter :

You may also be interested in...


Comments and Discussions

SuggestionFew Missed out Pin
zenwalker198527-Oct-11 7:05
memberzenwalker198527-Oct-11 7:05 
Use Path.Combine over "//"
Use String.Concat if not interested in String.Format
Carefully choose params
Always try to use Using(){} block
Try to make sure if you need Dispose pattern
Use static carefully
Never make SqlConnection global/class scope.
Play with CommandBehavior w.r.t Sql operations
Always suffix Delegate and Event respectively for custom delegates and events respectively (as part of naming thingy)
Never use magic strings/numbers instead use resources
prefix private var names with _
Choose carefully between StringBuilder and string (yes you have mentioned it, but some times not always SB is good enough)
Carefully understand the features of out and ref and use it appropriately
Do not use too much of virtual functions (some times it may cause performance overheads since they cant be inlined by JIT
Carefully choose Const vs readonly
Understand how valuetypes and ref types works internally (indepth), perhaps read Eric lippart blog post on same
Carefully understand diff between Linq and foreach. Not always Linq is preferable

P.S: most of the above things have picked up frm my memory and earlier tweets Smile | :)
GeneralRe: Few Missed out Pin
thatraja26-Nov-11 23:01
mvpthatraja26-Nov-11 23:01 
GeneralRe: Few Missed out Pin
zenwalker198527-Nov-11 2:17
memberzenwalker198527-Nov-11 2:17 
GeneralRe: Few Missed out Pin
_ Kunal Chowdhury _27-Nov-11 2:35
mvp_ Kunal Chowdhury _27-Nov-11 2:35 
GeneralRe: Few Missed out Pin
zenwalker198527-Nov-11 5:20
memberzenwalker198527-Nov-11 5:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.161021.1 | Last Updated 17 Oct 2010
Article Copyright 2010 by _Kunal Chowdhury_
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid