A large class is generally a code smell which indicates that the class is most likely trying to take responsibility for doing too many things. If you ever hope to write good SOLID code, then you need to start thinking about your class as being a single purpose type as per the Single Responsibility Principle - aka the first initial of the "SOLID" acronym.
Here's another principle that you may find useful. DRY, or Don't Repeat Yourself. It has been my experience that when you have very bloated classes with more than a few hundred lines of code, it is most likely that you will have a lot of repetition within the code. This is usual the result of Cut-And-Paste coding that often occurs when developers are in a hurry to hack together something that works, with little thought to the design and future maintenance of the code.
Large classes are often indicators of a large accrual of Technical Debt that will likely be very costly to maintain, and difficult to change.
So with all of these issues I've bombarded with you, what can you do about it? First of all, looking at ways to reorganize your code is an admirable task, but using IDE tricks such as tabbing, regions, or something else to hide the mess will not help you ti fix your problem, and will most likely end up making your situation worse. I would recommend instead that you look to refactoring your code.
- Break your long methods out into a collection of smaller ones.
- Use these smaller methods to help you to remove duplication.
- Identify what the class is intended to do, and move all of those methods that don't do what the class intended out into other classes.
- Move your new classes into new source files, and this will give you all of the benefits you are hoping to gain from the IDE tricks I mentioned earlier, as well as making it easier for an entire team to work on the same code base while minimizing the number of 3-way merges you are likely to encounter if you leave everything in a single file.
Keeping lots of little classes in their own files would also achieve the ability to add functionality through "includes" (or using statements in C#) in exactly the same way as you would in other languages.
#Include<BigBallOfmudPart1>project with me on your team. – Warren P Feb 16 '12 at 23:34