floater
Java Jedi
总版主
发贴: 3233
积分: 421
|
于 2004-09-23 22:24
This is a very good question.
The short answer is, nobody knows.
If I tell you something is right, something else is wrong. You can pick it up quickly. For example, most of jdk APIs are in this categories. It's black and white, easy to make a judgement. However, design is not as easy as this, it's kind of grey. This is where we need/build up experience. We want to make our designs as much independent of any concrete tools as possible, but we still have to build it based on something concrete. So the question is where to draw the line between these two. MDA is on the way to solve this problem, but still no there yet. This is a very hard problem because almost every design is different and thus it's hard to see the common patterns. Every design is an abstraction of something in the real world, solving this problem requires another abstraction of those design, so there are two levels of abstractions.
In my practice, I pay special attention and efforts on drawing the line between design and implementation, both at the design level and implementation level, since I found, there are some issues which exist between design and implementation levels but disappear at the design level(Lewis Ship, the tapestry guy, once noticed this too in his weblog, others noticed this much earlier).
MDA is a good starting point for this question, but is far from solving it. Experience still dominates this grey area, although there are certain rules we can follow in certain specific areas.
my 2cents
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." - Martin Fowler, Refactoring - Improving the Design of Existing Code
|