It is good practice in all areas of code to keep things as restricted as possible. Without specific reason for being otherwise, everything should be private, readonly (better yet const), and static. If a variable, method, or property can be private, make it private. If it can't be private, but can be protected, make it protected. If it can be readonly, make it readonly. If it can be static, make it static. The same is true for classes: they should be internal by default, and made public only when you have decided that this is a class you wish to export.