Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用导入静态字段是一种良好的编程实践吗?_Java_Android_Static_Import - Fatal编程技术网

Java 使用导入静态字段是一种良好的编程实践吗?

Java 使用导入静态字段是一种良好的编程实践吗?,java,android,static,import,Java,Android,Static,Import,我在我的SQLiteOpenHelper类中声明了一些常量变量: public static final String USERNAME = "user_name"; public static final String PASSWORD = "password"; 在创建SQL查询的活动中,我导入以下字段: import com.mygame.ui.login.LoginInfoSQLiteOpenHelper.*; 这是一种好的做法吗? 还是用传统的方法来引用常数更好 LoginInfo

我在我的
SQLiteOpenHelper
类中声明了一些常量变量:

public static final String USERNAME = "user_name";
public static final String PASSWORD = "password";
在创建SQL查询的
活动中,我导入以下字段:

import com.mygame.ui.login.LoginInfoSQLiteOpenHelper.*;
这是一种好的做法吗?
还是用传统的方法来引用常数更好

LoginInfoSQLiteOpen.USERNAME

如果您查看某人的代码并看到如下字段

foo.do(baz, USERNAME); 
wut(!),var从何而来?
搜索,grep,它在哪里声明

将其用作
ClassName.FIELD
会使事情变得更清晰。 您可以避免混淆,有时使用一个适当的类名来表示字段比使用一个不知从何而来的字段更有意义


不是每个人都使用IDE,并不是每个人都通过IDE读取代码(可能是通过Web上的一个存储库),甚至有些人认为VIM是IDE,而且我确实使用VIM很多(虽然我不认为它是IDE)。


所以,这不是关于IDE能做什么或不能做什么,而是关于代码阅读的更多内容。代码阅读,代码质量,用您选择的编程语言表达想法,通过有意义的抽象并很好地结合在一起

我推荐第二种方法,只导入类而不导入字段。因此,在常量前面加上所属类,如
LoginInfoSQLiteOpen.USERNAME
。它可能会变得高度冗余,但从长远来看,它的可读性和可维护性要高得多。

党晚了几年。。。但我觉得值得提出相反的观点。Java被设计为具有静态字段导入的原因之一是隐藏类是如何向类的用户实现的。这是面向外部代码的一个重要设计原则。我同意你的看法,但是,在某些情况下,这是值得的


关于静态字段导入的更多信息可以在这里找到:

What,您的IDE没有显示用户名是什么以及它来自哪里?;-)[我确实喜欢这个答案——一般来说——不过。]顺便说一句,使用
导入包通常被认为是不好的做法。*
。最好用显式的
import-package.SomeClass
语句替换它。我支持这一点,这也是一个代码读取问题,与一些人认为的任何类型的性能问题都没有关系。尽管我大体上同意,但我有一个例外,那就是在JUnit测试中使用assertXX()。这只是因为使用它们的特定上下文。@Ivan c00kiemon5ter V Kanak:谢谢您的输入。这为我消除了疑虑。了解正确且良好的编程方法,使我们的代码更干净、可读性更好。