代码之家  ›  专栏  ›  技术社区  ›  Alex

在Java类中频繁使用与映射键相同的字符串[已关闭]

  •  0
  • Alex  · 技术社区  · 6 年前

    考虑下一个场景:

    void foo(Map<String, String> params) {
        String myValue = params.get("myKey");
    }
    
    void bar(Map<String, String> params) {
        String myValue = params.get("myKey");
    }
    
    // ... and so on
    

    我想定义 我的钥匙 作为专用静态最终变量:

    private static final String MY_KEY = "myKey";
    

    然后使用它:

    void foo(Map<String, String> params) {
        String myValue = params.get(MY_KEY);
    }
    

    这是一种好的做法还是我们可以做得更好?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Rishikesh Dhokare    6 年前

    将重复的字符串文字提取到常量中,无论它是否用作Map中的键,这绝对是一种很好的做法。

        2
  •  2
  •   Hans Schreuder    6 年前

    如果要使用行为驱动,最好将键添加为参数:

    void foo(Map<String, String> params, String key) {
        String myValue = params.get(key);
    }
    

    关于常量,也可以将其放入枚举中,然后可以在枚举中收集多个键。或者在Constants类中收集它们。由你决定。

    唯一的一件事,奇怪的是你有一个空返回类型。我希望字符串:

    String getFooByKey(Map<String, String> params, String key) {
        return params.get(key);
    }