3

Today I saw something like this:

...
public class SomeClass {
    public static final int A_CONSTANT = SomeOtherClass.ANOTHER_CONSTANT;
...

Does this make sense? What is it good for? I wouldn't do it but I am just wondering since I didn't find anything about it

3
  • It would reduce the amount of code, if the constant is often used. So you have not to refer to SomeOtherClass.ANOTHER_CONSTANT but only to A_CONSTANT.
    – IQV
    May 12, 2017 at 6:07
  • 1
    @IQV This could also be solved with a static import. May 12, 2017 at 6:34
  • 2
    Maybe for some reason both values bust be the same but serve different purpose in both classes so that different names are desired. May 12, 2017 at 6:36

1 Answer 1

7

Things like this are easier to answer if you don't anonymize away the meaningful names.

public class InfinityStone {
    public static final int MAX_POWER = Integer.MAX_VALUE;
}

It's really a name change after all. The meaning is the point. Sure, I just want to use a number but I want make my thinking clear each step of the way by using the best name I can come up with. That way when things need to change the programmer that comes after me isn't looking at some weird number wondering why I chose it.

Why not just use Integer.MAX_VALUE everywhere? Because that name has limited meaning to my InfinityStone context. I'm trying to create a place where one model and one domain language dominates. It's distracting to see an implementation detail like Integer.MAX_VALUE scattered about in there.

The longer I spend programming the more convinced I am that the best thing you can do for a design is give things good names.

1
  • Yup, this is it. Good names with good context are key in so many ways. May 14, 2017 at 13:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.