On 11 Feb 2008, at 21:56, Daniel John Debrunner wrote:
1) To me this seems to be making something simple much more complex for no real benefit. It's good if open source code is easy to understand and follows existing practices. Java defines constants as static final fields in interfaces or classes, e.g.

  public static final String JMX = "derby.system.jmx";

Agreed, it is more complex.


2) Such constants would probably no-longer be in-lined by the java compiler, leading to potentially slower code as a field lookup is needed.

Not sure about this, as a final value should be in-lined regardless of how it is initialized. But this can be tested, I suppose.

I guess I don't quite see what the issue is with a "shared interface that defines all [related] constants." These are compile time only artifacts as they only contain literal constants.

I agree that in some cases it may make sense to move specific classes from a central reference area to a more specific are, e.g. jdbc constants could move to o.a.d.iapi.jdbc, but doing so is not improving the modularity of Derby, it's just a preference of location.

Well, it depends upon how you view modularity, encapsulation, etc..
The problem with a shared interface that mixes information from multiple layers, or modules, is that it breaks the basic component interaction rules. It breaks the basic principle of information hiding. The consequence can be that this information is misused. For instance, at present, what is to stop a Services layer module to have a dependency on some constant that is defined in a higher level module?

It might look like I am taking a purist view just for the sake of it, but I don't think so. It makes life easier if less information is shared. It makes it easier for some component to be replaced. Even a very simple example will illustrate - just the fact that some information is shared, means that I have to carry out an expensive impact analysis, which I could have avoided. So I think that the benefit is real.

Regards

Dibyendu



Reply via email to