英文:
Should I use a class name when referencing a static field in that class?
问题
以下是翻译好的部分:
如果我有一个类,其中有一个静态字段,例如:
public class Foo {
public static int bar;
}
...而我想在其声明的类内引用此字段。我知道以下两种方式都可以:
public class Foo {
public static int bar;
public static int getBar() {
return bar;
}
}
和:
public class Foo {
public static int bar;
public static int getBar() {
return Foo.bar;
}
}
是否包含类名像这样的方式之间是否有任何偏好或约定?任何帮助都将不胜感激。
英文:
If I have a class with a static field such as:
public class Foo {
public static int bar;
}
...And I want to reference this field within its declared class. I am aware that both:
public class Foo {
public static int bar;
public static int getBar() {
return bar;
}
}
And:
public class Foo {
public static int bar;
public static int getBar() {
return Foo.bar;
}
}
work. Is there any preference or convention between whether or not to include the class name like that? Any help is appreciated.
答案1
得分: 2
实际上,这完全基于个人意见。您应该使用您喜欢的任何方法。两者都同样有效。但我想补充一点,如果您正在使用getter/setter,那么请将静态变量声明为私有的:
public class Foo {
private static int bar;
public static int getBar() {
return bar;
}
public static int setBar(int _bar) {
bar = _bar;
}
}
由于getter和setter方法都是静态的,这确保它们只能与Foo
类的静态变量一起使用。这也解决了可读性问题。
英文:
Actually, its totally opinion based. You should do whatever method you prefer. Both are equally granted. But I would like to add one point, if you are using getter/setter, then declare the static variable private:
public class Foo {
private static int bar;
public static int getBar() {
return bar;
}
public static int setBar(int _bar) {
bar = _bar;
}
}
And as the both getter and setter methods are static, it ensures, they both definitely work with only static variables of Foo
class. This solves readability problem too.
答案2
得分: 1
I agree with whatever being mentioned in the comments. Apart from this, I keep readability of the code in mind and then decide. Following code fragment gives an idea on the same:
public class Engine {
private static boolean isOn = false;
public static void doWork1() {
if (isOn) { // 检查引擎是否打开
// 做一些工作
}
}
public static void doWork2() {
if (Engine.isOn) {
// 做一些工作
}
}
...
}
You can see that doWork2()
method by using the class name increased the code readability even without adding any comment to the code.
英文:
I agree with whatever being mentioned in the comments. Apart from this, I keep readability of the code in mind and then decide. Following code fragment gives an idea on the same:
public class Engine {
private static boolean isOn = false;
public static void doWork1() {
if (isOn) { // check if engine is on
// do some work
}
}
public static void doWork2() {
if (Engine.isOn) {
// do some work
}
}
...
}
You can see that doWork2()
method by using the class name increased the code readability even without adding any comment to the code.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论