什么时候在函数中使用字符串参数是好是坏?
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
参数的可能性。
我前几天看到一个拉取请求,它在一个函数中将一个字符串作为参数,但该字符串未被修改。相反,该字符串用于在函数的功能之间切换。
与创建单独的函数(如 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
参数的可能性。