[英]Better Practice: Printing from void method OR returning value from method and printing from method caller
在從帶參數的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";
}
我會改變幾件事:
1.根據Java代碼約定編寫(關於方括號 )
2.該方法只有一個出口點:
public static String getValue(int number){
String result = null;
if(number == 10) {
result = "Message A";
} else {
result = "Message B";
}
return result;
}
最后,在哪里打印都沒關系-但我更喜歡在方法內部打印-如果您有多個調用者,則可以通過這種方式進行打印-您不必在不同位置重新實現打印結果。
第一種方法的優點是您已經封裝了輸出方法,因此即使您需要從多個位置調用printValue
,也可以在需要添加條件行為或以其他方式打印值的情況下更改單個位置。
第二種方法的優點是您可以編寫測試來驗證您的價值轉換。
如果您同時需要這兩種優勢,您甚至可能想要組合這些方法,方法是讓printValue()
調用getValue()
以便您可以針對getValue()
編寫測試,並將輸出機制封裝在printValue()
。
如果您的需求沒有決定最有用的方法,那么我建議您優先考慮代碼的清晰度,並確定在需求發生變化時可以重構代碼。
第二種方法在大多數實際應用中會更好。
正在執行的活動是選擇正確的消息字符串。 如果我們將方法重命名為更具描述性的內容,則可以選擇
public static String determineMessageFromValue(int number)
或者,如果您將打印保留在方法內部
public static String determineAndPrintMessageFromValue(int number)
這比較冗長,可能比您想要的更為具體。
如果程序的目標始終是對控制台執行某項操作,這似乎有點過頭了,但是當您在更復雜的系統中使用此代碼時,它可以幫助您考慮責任。 例如,如果您決定在Java Swing UI以及網頁上顯示該值,那么將方法打印到控制台就沒有那么有用了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.