Sharing data across circuits does not in my mind break any rules, whereas having one fuse call another does. Of course, those are my rules! But FuseQ makes it actually much MORE obvious what is going on by looking at the Controller. And it means virtually NO duplicated code.
As for lacking structure in code, gee, I don't think my code lacks structure! I think that something like this makes very clear what's going on: <cfcase value="main"> <cfset addToQ( 'Company.getCurrentStockPrice' )> <cfset addToQ( 'Benefits.getSynopsis' )> <cfset addToQ( 'Training.getUpcomingTrainingEvents' )> <cfset addToQ( 'RegisteredUser.mainPage' )> </cfcase> I think that reduces the need for any external documentation, though I certainly welcome it. I don't see this as a "structure in methodology" v. "structure in code" tradeoff. I think having both of those is necessary for code that's clean, reusable and maintainable. -----Original Message----- From: Patrick McElhaney [mailto:[EMAIL PROTECTED]] Sent: Wednesday, June 05, 2002 8:48 AM To: [EMAIL PROTECTED] Subject: RE: Can you give me the 'why's' of MVC? > Hal wrote: > > The problem you stated, Patrick, is the one that led > me to embrace the idea of FuseQ for MVC. Since all > fuses in a FuseQ request are in the same lifespan, the > problem of caller v. variables scopes goes away. Using > FuseQ, a VIEW calls the CONTROLLER that sets one or > more fuseactions into the FuseQ. I have no doubt that FuseQ makes your approach easier, and my problem is really the approach itself. Conventional wisdom says that each fuseaction should have its own data and that one fuseaction shouldn't be directly writing to another's data. Of course, Fusebox flies in the face of conventional wisdom by having all fuses in a fuseaction share the same data. I think we manage to get away with it as long as a fuseaction for the most part does nothing but include fuses, we don't allow fuses to include other fuses and we don't allow a fuseaction to include a fuse from another circuit. If we deviate from those rules even a little bit our code becomes hard to maintain. As our apps become more complicated, it becomes increasingly difficult to stick to those rules. And if we do stick to them, as I said before, we end up with a lot of duplicated code. Do you agree so far? I think we've each broken the rules by allowing one fuseaction to include/queue/call another one and allowing data to be shared across circuits. The difference is that I'm also removing the need for those rules by submitting to conventional wisdom and encapsulating my fuseactions. I just don't think FuseQ can produce applications that are easy to follow and maintain. But maybe this goes back to the methodology. Whereas you lack structure in the code itself you have a lot of supporting documentation. I can imagine that if I was responsible for maintaining an app built by John and Hal I would rely heavily on the Adalon and/or mind maps. Also, I build apps one fuseaction at a time (read: emergent design) and I can't imagine trying to do that with FuseQ. But I'm sure it wouldn't be hard if I designed apps using a top-down approach. In fact, now that I think about it part of the reason that with not encapsulating our fuses is that we document the interface with fusedocs. Well, that's something I never really thought about before: Less structure in the methodology requires more structure in the code, and vice versa. Does that make sense or am I thinking too hard so early in the morning? Patrick ==^================================================================ This email was sent to: [email protected] EASY UNSUBSCRIBE click here: http://topica.com/u/?bUrFMa.bV0Kx9 Or send an email to: [EMAIL PROTECTED] T O P I C A -- Register now to manage your mail! http://www.topica.com/partner/tag02/register ==^================================================================
