Ron Jeffries wrote: > > On Mon, 14 Jan 2002 03:48:44 GMT, Albert Wagner <alwagner / tcac.net> wrote: > > >2) it is an attempt to reduce the visual complexity, so as to be able to > >grasp quickly what is going on in a method; i.e. , condense a snippet that is > >not duplicated anywhere else into a sort of language shorthand. I call this > >the "Watership Down" syndrome: one, two, three, many. This is the most > >common reason and the most unjustifiable from a programming standpoint. > > I'd like to hear more about this last sentence ... I was referring to those times when I take a snippet of code from a long and complicated method, what Holden (#31123) calls "helper" code, and create a new method. This method is called from only one place, so its methodizing can't be justified by the "don't duplicate code" rule. The only justification for its methodizing is to reduce the physical size of its "owner" method, rendering it more readable. Laurent touches on this (#31128) with his "flattened" method. If you were referring to the "Watership Down" remark:-), that is a reference to a book I read in the '70s, I think, about a group of rabbits on an adventure. Rabbit's had trouble with numbers and their counting consisted of one, two, three, many. Humans also have natural limits in the number of abstractions they can hold in their head at a time. The really good books on human interface make frequent reference to such limits. Mike hit the nail on the head in #31116: code is replaced with self-documenting method names, until the method falls under the "many" limit. It is no accident that OOP is so closely associated with hierarchies: OOP is an attempt to deal with complexity. I think that the subject you brought up is so closely related to OOP hierarchies because it is the end result of another hierarchy that we haven't yet named, but are all aware of at some level. Complicated objects are criss-crossed with such hierarchies. OOP is simply an attempt to formalize one of those. If OOP (class hierarchies) are perceived as vertical, then there are other hierarchies that are horizontal. Aspects (AOP) are an attempt to deal with one of these. Now I am rambling. > > Ronald E Jeffries > http://www.XProgramming.com > http://www.objectmentor.com > I'm giving the best advice I have. You get to decide whether it's true for you. -- "It requires wisdom to understand wisdom: the music is nothing if the audience is deaf." - Walter Lippman