There's a programming idiom to avoid using complex if statements and 
switch/case statements, and instead to just send a message to a different class 
of object.

I'm doing some parsing of an old text data format which
has a hierarchy with a record and then sub-records and
sub-sub records, 1 per "line".  Each is structured as 
a type, nesting level number and then various kinds of 
values depending thereon.  What I'm agonizing over is 
how best to handle invoking the processing for each 
sub-record type in Objective-C.  This would seem to 
require having a bunch of classes with names like 
JGRecordTypeParser and then I might do something like:
NSString * valueParserClassPrefix = @"JG";
NSString * valueParserClass = [[valueParserClassPrefix 
stringByAppendingString:recordSubType] stringByAppendingString:@"Parser"];
[[NSClassFromString(valueParserClass) alloc] initWithTokens:tokens  
recordType:recordType level:aLevel];
or some such.

Or, I could just do it all in my primary parser class
[self parseValueOfType:recordType subRecordType:subType level:aLevel];
and then have the rat's nest inside there:
switch (recodType)
{
  case thisType:
   //...
   break;
  case thatType:
   //...
   break;
  default:
  //...
}

Advice on what's least messy overall or pointers
to sources of info would be appreciated.


      
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to