在使用参数打印void方法的值或将值返回给方法调用者并在方法调用者中打印之间,哪种方法被认为是更好的做法(如果有的话)?例如,第一个代码摘录是前者,第二个代码摘录是后者:
public static void main(String[] args){
printValue(5);
}
public static void printValue(int number){
if(number == 10)
System.out.println("Message A");
else
System.out.println("Message B");
}
和
public static void main(String[] args){
System.out.println(getValue(5));
}
public static String getValue(int number){
if(number == 10)
return "Message A";
else
return "Message B";
}
答案 0 :(得分:4)
我会改变一些事情:
1.根据Java代码约定(关于using brackets)写入
2.只有一个退出方法:
public static String getValue(int number){
String result = null;
if(number == 10) {
result = "Message A";
} else {
result = "Message B";
}
return result;
}
最后,在打印它的地方并不重要 - 但我更喜欢在方法中打印 - 这样如果你有多个来电者 - 你不必重新实施打印导致不同的地方。
答案 1 :(得分:0)
第一种方法的优点是你已经封装了输出方法,所以即使你从很多地方调用printValue
,你也可以改变一个位置,如果你需要添加条件行为或打印一个值。不同的方式。
第二种方法的优点是您可以编写测试来验证您的价值转换。
如果您需要通过printValue()
调用getValue()
来获得这两种优势,您甚至可能希望合并这些方法,以便您可以针对getValue()
编写测试以及将输出机制封装在{ {1}}。
如果您的要求没有规定最有用的方法,我建议您优先考虑代码的清晰度,并确保在需求发生变化时重构代码。
答案 2 :(得分:0)
第二种方法在大多数实际应用中会更好。
正在执行的活动是选择正确的消息字符串。如果我们将方法重命名为更具描述性的方法,我们可以选择
public static String determineMessageFromValue(int number)
或者,如果您将打印保留在方法
中public static String determineAndPrintMessageFromValue(int number)
这比你想要的更有语意,可能更具体。
如果程序的目标总是对控制台执行某些操作,那么看起来有点像矫枉过正,但它可以帮助您在更复杂的系统中使用此代码时考虑责任。例如,如果您决定在java swing UI上显示值,那么将方法打印到控制台就不会有用了。也在网页上。