Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #8244 > unrolled thread

borrowing Constants

Started byRoedy Green <see_website@mindprod.com.invalid>
First post2011-09-23 17:40 -0700
Last post2011-09-26 01:22 +0200
Articles 3 on this page of 23 — 9 participants

Back to article view | Back to comp.lang.java.programmer


Contents

  borrowing Constants Roedy Green <see_website@mindprod.com.invalid> - 2011-09-23 17:40 -0700
    Re: borrowing Constants Arne Vajhøj <arne@vajhoej.dk> - 2011-09-23 20:44 -0400
      Re: borrowing Constants Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-09-23 22:10 -0300
        Re: borrowing Constants Roedy Green <see_website@mindprod.com.invalid> - 2011-09-23 18:39 -0700
          Re: borrowing Constants Arne Vajhøj <arne@vajhoej.dk> - 2011-09-23 22:17 -0400
          Re: borrowing Constants Daniel Pitts <newsgroup.nospam@virtualinfinity.net> - 2011-09-25 11:25 -0700
            Re: borrowing Constants Lew <lewbloch@gmail.com> - 2011-09-25 11:36 -0700
        Re: borrowing Constants Arne Vajhøj <arne@vajhoej.dk> - 2011-09-23 22:30 -0400
    Re: borrowing Constants Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-09-23 21:15 -0400
      Re: borrowing Constants Roedy Green <see_website@mindprod.com.invalid> - 2011-09-23 18:43 -0700
    Re: borrowing Constants markspace <-@.> - 2011-09-23 18:44 -0700
      Re: borrowing Constants Lew <lewbloch@gmail.com> - 2011-09-23 19:19 -0700
      Re: borrowing Constants Arne Vajhøj <arne@vajhoej.dk> - 2011-09-23 22:32 -0400
    Re: borrowing Constants Lew <lewbloch@gmail.com> - 2011-09-23 19:11 -0700
      Re: borrowing Constants Lew <lewbloch@gmail.com> - 2011-09-23 19:26 -0700
    Re: borrowing Constants v_borchert@despammed.com (Volker Borchert) - 2011-09-24 09:44 +0000
    Re: borrowing Constants Roedy Green <see_website@mindprod.com.invalid> - 2011-09-24 15:38 -0700
    Re: borrowing Constants Roedy Green <see_website@mindprod.com.invalid> - 2011-09-24 17:09 -0700
      Re: borrowing Constants Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-09-24 20:14 -0400
      Re: borrowing Constants markspace <-@.> - 2011-09-24 18:18 -0700
        Re: borrowing Constants Arne Vajhøj <arne@vajhoej.dk> - 2011-09-25 22:36 -0400
      Re: borrowing Constants Arne Vajhøj <arne@vajhoej.dk> - 2011-09-25 22:35 -0400
    Re: borrowing Constants Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-09-26 01:22 +0200

Page 2 of 2 — ← Prev page 1 [2]


#8323

FromArne Vajhøj <arne@vajhoej.dk>
Date2011-09-25 22:36 -0400
Message-ID<4e7fe534$0$288$14726298@news.sunsite.dk>
In reply to#8275
On 9/24/2011 9:18 PM, markspace wrote:
> On 9/24/2011 5:09 PM, Roedy Green wrote:
>> Another rule of thumb may be, instead of cross linking classes with
>> references to each others constants, refactor out the constants to a
>> third class, and reference it
>
> Generally, no. It's been tried, and found to not work well. A class full
> of unrelated constants is just that: a class full of unrelated
> constants. Put the constants where they belong.

That is very basic good design.

Arne

[toc] | [prev] | [next] | [standalone]


#8322

FromArne Vajhøj <arne@vajhoej.dk>
Date2011-09-25 22:35 -0400
Message-ID<4e7fe4ff$0$288$14726298@news.sunsite.dk>
In reply to#8272
On 9/24/2011 8:09 PM, Roedy Green wrote:
> On Fri, 23 Sep 2011 17:40:20 -0700, Roedy Green
> <see_website@mindprod.com.invalid>  wrote, quoted or indirectly quoted
> someone who said :
>
>> class A
>> {
>> static String VERSION = "1.0b";
>> }
>>
>> and
>> class B
>> {
>> static String VERSION = A.VERSION;
>> }
>
> restating, if the expression for A.VERSION cannot be evaluated an
> compile time, even final won't rescue you from having to include both
> A in your jar and indirectly loading A when you load B.
>
> So the rule of thumb use static final with values known at compile
> time to avoid needless class loading. But be aware, you must recompile
> B if the value of A.VERSION changes, or you will get the old value.
>
> Another rule of thumb may be, instead of cross linking classes with
> references to each others constants, refactor out the constants to a
> third class, and reference it or extend it.
>
> In a number of my projects I have a Config class where everything
> constant (possibly computed)  needed to configure a program for a
> particular use are collected.

Rule of thumb: don't worry about the microseconds spend on class
initialization and spend the time on something relevant.

The requirement to recompile B if A is changed for constants
can be a much more severe problem than class init.

Arne

[toc] | [prev] | [next] | [standalone]


#8319

FromDaniele Futtorovic <da.futt.news@laposte-dot-net.invalid>
Date2011-09-26 01:22 +0200
Message-ID<j5od5n$7is$1@dont-email.me>
In reply to#8244
On 24/09/2011 02:40, Roedy Green allegedly wrote:
> If you have some code like this:
> 
> class A
> {
>  static String VERSION = "1.0b";
> }
> 
> and 
> class B
> {
> static String VERSION = A.VERSION;
> }
> 
> When you use Class B, does all of class A get instantiated?
> Does all of class A get put in B's jar?
> 
> 
> If so, it suggests you are better off to have a tiny common class and
> have A and B reference it.

If someone showed me that code (class B) and told me they didn't intend
to include class A in the runtime, my first question would be: "then why
do you reference it?"

If you want to decouple, decouple properly. Use a common class, a
resource file, a service provider interface, whatever. But don't rely on
intrinsics -- even if in this case those are fairly basic and
well-understood intrinsics. That's just begging for trouble.

-- 
DF.
Determinism trumps correctness.

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | comp.lang.java.programmer


csiph-web