"Victor Mote" <[EMAIL PROTECTED]> wrote on 18.05.2004 22:12:45:
> The real question on modularity was never whether it should be a priority, > but whether it hurt the project. On open-source projects, priorities are > really set by each individual. You fix the thing that hurts the most at the > moment, and that might be different for each developer. If I am working on > A, and you are working on B, as long as your work on B isn't bad for the > project as a whole, I have no right to complain. Nobody has yet put forth a > good argument against modularization, but it was opposed anyway. So now > we'll have a chance to test it in the real world. In my formatter, I have implemented modularized layout. From the start, I was sceptical, and I was indeed tempted several times to throw the concept out of the window because it got in the way, but in the end it was always possible to maintain the separation of concerns between different kinds of layouters (BlockArea, Table, Page, and List for example) even though the interaction is admittedly complex. And, yes, it's sometimes hard to follow the logic by staring just at the code - which I prefer to using debuggers. To summarize my impressions from this: 1. I would do it again this way. 2. Maintaining clean separation of concerns *forced* me to redesign my layouter interfaces several times when I added new functionality, but I gained an implementation that I still understand clearly in its entirety even I cannot work on it for a week. 3. The only place where I have difficulties after some time off is my BlockAreaLayouter which is one very large chunk of code. Maybe it's even worth factoring out a LineAreaLayouter, though I'm not sure of it - the interaction is really tight. 4. It's too early to estimate how much modularized layout will hurt performance in the end. My gut feeling is: not much, and it's probably wort it. So, from my own experience I can only encourage you to go forward with your plan. For me, it worked so far. Let's see if the XSL rec turns up more nasty surprises... Bye, Arnd -- Arnd Beißner Cappelino Informationstechnologie GmbH