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参数. 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也是有意义的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |