Re: How to split large class files?
Re: How to split large class files?
- Subject: Re: How to split large class files?
- From: Seth Willits <email@hidden>
- Date: Mon, 5 Nov 2007 17:37:12 -0800
On Nov 4, 2007, at 12:04 PM, Bill Bumgarner wrote:
I have a controller class which has become quite large. It has many
instance variables which are all related to the view it connects
to, and which are manipulated inside the class. Is there a clear
way to split such a file into two (or more) components? I
considered making a category, but that's not quite good because it
cannot have (new) instance variables in it. Moreover, I cannot have
the instance var declarations in the original file and the code in
the category; that will generate many warnings. Any suggestions?
Thanks in advance, Arthur C.
You can certainly have the iVar declarations in the main @interface
declaration and references to the ivars in categories without
warnings. Works fine. If you are seeing warnings, then something
else is hosed.
I'd suggest having a close look at your controller to see if it
can't be broken up into multiple classes. Huge source files are
usually an indication that something needs to be refactored.
Usually. Controller classes are the one class that can sometimes
grow quite large.
I've wondered at what point does it cross the line from being just
"big" to "dudeā¦ refactor your code" big.
The largest controller I have in any project is about 5,000 lines
including comments and empty lines etc. Feels too big to me, but
breaking it up into multiple classes just lead to having too many
interdependent classes, so I just busted it up into separate files and
categories to group things logically for my own benefit. Doesn't
change the code usage at all. It's a happy medium for now.
--
Seth Willits
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden