A few notes from a few responses:

> > 1) "Object explosion" for large sites--1-to-1 mapping of
> URLs to objects can
> > lead to hundreds of small classes. It really bothers me that
> Struts
> > encourages this kind of situation. Although the
> DispatchAction helps a lot.
> >
> 
> 30 years of professional software development experience leads
> me to
> believe that 738 simple, easy-to-understand, separately
> maintainable.
> single purpose classes that follow a standard design pattern
> (in this case
> the GoF "command pattern") are a much better investment that
> one class
> with 738 branch points -- unfortunately very common -- or zero
> business
> logic classes because the business logic is intermixed with
> the
> presentation (a malady that is far to common in webapps).
> 

As Dave Peckham pointed out, you can have multiple
pages/requests map to the same Action class. The question you
have to ask in doing this is this: where do I stop? You do not
want the entire app, but only a specific set of related
functions mapping to the same Action class. When we did this at
my shop, we had about 20 different possibilities across 5 pages.
This resulted in a horribly long if/else block, and to make it
more complex, some of the "ifs" would have to execute other
"ifs" (e.g., if it comes in blank, do the same as if it came in
as read unless parameter x is null, etc.). To address this, I
broke the "ifs" into individual methods, then simply used the
incoming "action" parameter and, using reflection, executed the
appropriate method (null or "" mapped to a default method). This
is a much more OO structured approach than an if/else statement
and allows for cross-method invocation.

> > 2) Meaningless method signatures, like execute(Mapping,
> Form, Request,
> > Response). All the methods look the same, regardless of what
> data they're
> > actually expecting. This often makes it necessary to go into
> the Java code
> > just to figure out what data a method uses. Not to mention
> losing
> > compile-time type checking.
> >
> 
> My experience has been that the benefits of "sameness" far
> outweigh these
> costs.  In particular, type checking is something that is
> easily toolable
> - you don't have to have the compiler do it for you.
> 
> Speaking of tools, have you noticed the number of tools that
> are starting
> to take models of a business application, and generating them
> based on
> Struts?  That can happen because the basic interactions are
> very simple,
> and very well defined.
> 

It also allows for a much simpler and more efficient
subclassing. Instead of the subclass having to acquire the
resources from multiple places, it has them all passed into the
method. 

> > I have been doing front-end web development since 1996, and
> doing it in Java
> > since 2000, and in all that time I have never built a
> presentation tier that
> > I would consider both large and clean. It just seems like as
> websites get
> > bigger and bigger (the site of the company I'm working at
> has 738 at the
> > moment) there is no way to avoid "throwaway" code (i.e. at
> least one method
> > per request that does little else but service that request).
> I got so sick
> > of it that I am no longer in web development, instead I
> concentrate on the
> > backend transaction processing.
> >
> 
> There are those of us who have to write webapps anyway, and
> don't get that
> option.  And, in reality, web development is *much* cleaner
> than GUI
> programs -- have you ever looked at someone else's code based
> on Swing, or
> MFC, or ...?  That's how I ended up on the web app development
> in the
> first place, instead of GUIs :-).
> 

I heartily agree. I've done enough GUI programming to know I
never want to do it again. I am currently working on a major
application rewrite from a client/server base to become a webapp
and the ease and speed of which web screens can be designed and
implemented is amazing. Using intelligent DHTML allows for our
webapp to be fully keyboard driven as well as mouse
supplemented, thus retaining the keyboard speed of a green
screen or client server app. The one thing GUI apps still have
over webapps is the ability to more dynamically respond to the
user without having to send/receive info to/from the server.
There are ways around some of this, but overall it is not quite
as nice as a GUI for some things. On the whole (anybody see
Austin Powers 3? I can't say on the whole without cracking up
now!!!), web programming is so much better than true GUI
programming that I'll never go back. 

And by the way, everybody on my project is responsible for
programming the front end JSPs through the back end EJBs. I'm
amazed when people say that there are shops that can completely
segregate the two tasks (I can see some segregation, but not
total unless it's a very large and advanced shop that can
actually divide the workflow that well -- a concept that I still
find difficult to believe). 


__________________________________________________
Do You Yahoo!?
HotJobs - Search Thousands of New Jobs
http://www.hotjobs.com

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to