加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 这种方法标准使用varags.length而不是布尔值?

发布时间:2020-12-15 04:50:08 所属栏目:Java 来源:网络整理
导读:我在很多地方多次调用这个方法: private String changeFirstCharCase(String word) { return Character.toLowerCase(word.charAt(0)) + word.substring(1);} 现在我想在不创建另一个方法的情况下为此方法添加toUpperCase功能,我需要调用者使用布尔值作为参
我在很多地方多次调用这个方法:

private String changeFirstCharCase(String word) {
    return Character.toLowerCase(word.charAt(0)) + word.substring(1);
}

现在我想在不创建另一个方法的情况下为此方法添加toUpperCase功能,我需要调用者使用布尔值作为参数来确定使用哪个方法.

private static String changeFirstCharCase(String word,boolean toUpperCase) {
    return toUpperCase
            ? Character.toUpperCase(word.charAt(0)) + word.substring(1)
            : Character.toLowerCase(word.charAt(0)) + word.substring(1);
}

在这种情况下,我要为每次调用添加一个true / false参数.
但是当我使用varags时,只需要toUpperCase能力的调用需要添加他们的注释,这可能是任何东西.

private static String changeFirstCharCase(String word,String... toUpperCase) {
    return toUpperCase.length > 0
            ? Character.toUpperCase(word.charAt(0)) + word.substring(1)
            : Character.toLowerCase(word.charAt(0)) + word.substring(1);
}

通过这种方式,旧方法调用不受影响.

changeFirstCharCase(facadeType);

新的可以打电话:

changeFirstCharCase(facadeType,"toUpperCase")

在可读性和维护的情况下,这是一个aprouch标准吗?

解决方法

对我来说,这似乎是糟糕的API设计.要求API的用户传递额外的String参数(可能包含任何内容)以获得大写功能是违反直觉的.

如果您不想触及原始方法,请使用boolean参数引入新的重载方法:

private String changeFirstCharCase(String word) {
    return changeFirstCharCase(word,false);
}

private String changeFirstCharCase(String word,boolean toUpperCase) {
    return toUpperCase
        ? Character.toUpperCase(word.charAt(0)) + word.substring(1)
        : Character.toLowerCase(word.charAt(0)) + word.substring(1);
}

或者为大写功能引入一个新方法,不带布尔参数:

private String changeFirstCharCase(String word) {
    return Character.toLowerCase(word.charAt(0)) + word.substring(1);
}

private String changeFirstCharToUpperCase(String word) {
    return Character.toUpperCase(word.charAt(0)) + word.substring(1);
}

虽然在这种情况下,将原始方法重命名为changeFirstCharToLowerCase也是有意义的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读