可能重複:
Advantages and Disadvantages of using System.out.printf();Java的printf()是一個不好的習慣嗎?
在一個網上論壇的討論,有人告訴我,使用printf
方法(如在System.out.printf()
)是一個不好的做法,我應該用println
相反,雖然用戶無法給出明確的解釋,但這是「他被告知」的事情。這是真的?
可能重複:
Advantages and Disadvantages of using System.out.printf();Java的printf()是一個不好的習慣嗎?
在一個網上論壇的討論,有人告訴我,使用printf
方法(如在System.out.printf()
)是一個不好的做法,我應該用println
相反,雖然用戶無法給出明確的解釋,但這是「他被告知」的事情。這是真的?
不,這是不正確的。
唯一可能的理由,我能想到的是,printf
與格式字符串字面\n
和/或\n
會產生特定於平臺的換行......這是一個便攜性的問題。但簡單的解決方案是在格式字符串中使用%n
。
當然,使用printf
時,如果不需要將參數替換爲格式字符串,則不是最佳選擇。我不會說這會讓它成爲壞習慣。
我在有關格式化打印的Oracle文檔中閱讀了有關該問題的內容,並且我已經知道這一點。但我認爲這是知道可用指示符以及爲什麼應該使用它們的問題。謝謝回覆。 – Baderous 2012-03-06 16:24:36
printf
能做的事情,println
不能,所以說你應該總是使用println
而非printf
顯然沒有意義。
對於不知道printf
控制字符串中使用的格式說明符的人,可能難以閱讀 - 這可能是您與之通話的人建議您不要使用printf
的原因。
下一次一些更一般性的建議:記住有很多的人誰將會很樂意給儘管不知道他們在說什麼,甚至在那些誰做知道他們在說什麼,你的意見關於編程的觀點與程序員一樣多。所以你應該從來沒有只因爲有人告訴你或因爲你讀了一本書而接受任何福音。 總是試着瞭解建議的原因,並記住每規則也有例外。要明白,在設計或實施項目時,你所做的每一項決定都有利有弊,所以通常沒有一項是無條件「正確」的選擇; 你必須使用你的經驗和判斷力,以確定什麼是「正確」的方式來做在你目前的情況下,即使它在大多數情況下可能是「錯誤的」。
我同意你的意見。由於我對編碼的這些「教條」持懷疑態度,我從來沒有聽說過這個,所以我決定在這裏問。 – Baderous 2012-03-06 16:19:10
如果你需要的格式化功能printf
,那麼毫無疑問,因爲println
是不可接受的選擇。
如果在另一方面,你只是一個輸出正常的字符串,例如:
System.out.printf("All work completed.\n");
那麼這將是更規範使用println
這一點。就程序的正確性而言,它並不重要 - printf可能會更加昂貴,但實際上這並不重要。
但是,我確實看到了一些使用printf
進行簡單輸出的示例代碼,我承認我發現它很混亂。所以我堅持僅僅是因爲這個原因println
,它會讓你的代碼更加熟悉並且更容易理解其他開發者。
(ETA:即使檢討我自己的職位,現在,我本能地覺得代碼示例是錯誤的,並希望將其修正爲println
所以我剛纔的看法肯定還是持有。)
無論使用哪一種是「壞「練習如果你正在做調試日誌。
如果是這種情況,使用適當的日誌記錄框架是「最好」的做法。 Java有很多選擇。
在問題中,它被告知它的用途是日誌記錄? – brunoais 2012-03-06 21:35:11
它問不好的做法,我舉一個例子,這是...恰好適用於兩種選擇 – 2012-03-07 13:14:42
http://stackoverflow.com/questions/548249/is-there-a-good-reason-to-use-printf-instead-of-print-in-java – Zavior 2012-03-06 15:48:16