什么时候在函数中使用字符串参数是好是坏?

When is it good and bad to use a string parameter in a function?

我前几天看到一个拉取请求,它在一个函数中将一个字符串作为参数,但该字符串未被修改。相反,该字符串用于在函数的功能之间切换。

与创建单独的函数(如 getNewTableVersion / getOldTableVersion 以省略 tableType 参数相比,这样做的优缺点是什么?

public static String getTableVersion(String prefix, String tableVersion, String tableType) {
    String[] tableVersions = tableVersion.split(prefix);
    Integer version;
    switch (tableType) {
      case "new":
        // set version to newer one
      case "old":
        // set version to older one
      default:
        // default functionality
    }

    return prefix + version.toString();
}

郑重声明,我认为这是一种不好的做法。我认为有了一份利弊清单,我也许可以说服开发人员不要这样做。

我认为这是不好的做法,因为您无法从其原型推断出函数的功能。它散发着魔法常数的味道。

如果你想做这样的事情,一个选择是使用 enum 来限制 tableType 参数的可能性。