java - Java 中本地集合的类型约定

标签 java naming-conventions coding-style

我最近遇到了一组实例化本地 map 的代码,如下所示:

HashMap<String, Object> theMap = new HashMap<String, Object>();

通常,当我看到 HashMaps 使用(并且我自己使用它们)时,局部变量只是 Map(接口(interface)),而不是绑定(bind)到特定的实现。显然,如果 Map 可能被实例化为各种 Map 类型(例如接受参数),则这是必需的。但是,在类似上述的情况下,它是在同一点定义和实例化的,是否有仅使用接口(interface)类型的潜在原因,或者它只是样式/约定?

最佳答案

(我最初根据标题误解了这个问题,但我已经包含了类型和变量约定,因为它们都很有趣。)

重要的是它是一张 map :您可以在其中查找内容。其余的是实现细节。

我建议给它一个语义名称,例如

Map<String, Object> nameToSessionMap = ...

... 这样当您阅读代码时,您就会知道键和值的含义。

至于变量的类型 - 同样,我通常会使用接口(interface)而不是实现,部分原因是它表明我没有使用特定于该类型的任何成员。我不想强调代码中的实现,通常...这意味着当我确实关心实现时,我可以使它更明显。

关于java - Java 中本地集合的类型约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3516414/

相关文章:

java - 如何将 java.sql.Date 对象添加到 JSON 数组?

c# - c# 中类、函数、变量等的正确命名符号是什么?

groovy - groovy 脚本文件的命名约定

php - 如何避免CodeIgniter中 Controller 代码臃肿?

c++ - 是否有可用的 C++ 样式和/或标准示例文件?

java - 使用 Twitter4j 获取 100 多条 HitTest 门推文

java - 如何查看 Reader 是否处于 EOF?

java - 更新到 MacOS Sierra 后,带有 Surefire (TestNG) 的 Maven 运行缓慢

python - Python中变量名后的下划线

c++ - 模板中的#define 很奇怪?