下划线作为Java中的变量名。为什么?

时间:2019-07-17 20:17:17

标签: java

我们正在经历将产品代码库从Java 8升级到Java 12的过程。发现的一个问题是,我们的代码在许多情况下都使用下划线字符(_)作为变量名,即不再允许(显然是从Java 9开始)。这是遗留代码,所以我真的不知道为什么要这样写。在大多数情况下,似乎已经定义了一种方法(名为_)来按名称检索资源字符串。例如,这种方法的一个实例如下所示:

JFileChooser chooser = m_directory.getFileChooser ();
chooser.setDialogTitle (_("chooser.title"));
chooser.setFileFilter (ExtensionsFileFilter.withFullDescription (_("chooser.shp"), ".shp"));
chooser.setFileSelectionMode (JFileChooser.FILES_AND_DIRECTORIES);
addProperty (_("labels.dir"), m_directory);

该方法的用法如下:

func someFunction() {
    let wkWebView = WKWebView()

    wkWebView.loadHTMLString("<html><body></body></html>", baseURL: nil)
    wkWebView.navigationDelegate = self as? WKNavigationDelegate
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    //ready to be processed
}

我们正在重命名_方法。但是,我很好奇为什么在我们的代码中使用了这种模式。这是某个时候流行的模式吗?使用某种技术(Swing)时它受欢迎吗?到目前为止,我所有的Google都因为变量不能再被命名为_而大获成功,但是却没有解释为什么可能首先要这样做。原来的开发人员已经不在了,所以我不能问他们。

有人有什么想法吗?

我不认为这是suggested question的副本。该问题标记为“ c”,而我的标记为“ java”。同样,该问题的可接受答案表示_函数是gettext提供的预定义函数。这不适用于我,因为我要询问的_函数实际上是在我们的Java代码库中定义的。话虽如此,建议的问题和此处发布的一些信息的上下文似乎表明存在关联。听起来_函数/方法通常可以理解为在检索可本地化的字符串资源时使用。

1 个答案:

答案 0 :(得分:7)

我无法代表您的代码,但是我知道_方法是i18n方法的别名(例如gettextlaravel中的方法)。我猜想下划线是用来防止像通常使用的方法那样使用GetTranslationFor()之类的方法名来乱码整个代码。