[英]Explicit Casting a return
我正在維護一個不再維護此產品的供應商編寫的代碼庫(舊版,Java 3)。
我經常遇到這樣的事情:
private boolean doSomething() {
boolean success = false;
// do stuff
if (/*some stuff*/) {
success = true;
}
return success;
}
public void doStuff() {
boolean ok = (boolean) doSomething();
if (ok) {
// do stuff
}
}
所以,顯然他們試圖通過傳回指示狀態(驗證)的布爾值來確定方法成功/失敗......我個人認為這是不好的做法,我更傾向於向呼叫者發起異常泡沫,但那只是我。
我很困惑的部分,為什么這個供應商經常顯式地將布爾返回值轉換為布爾值? 這是多余的,肯定會在運行時產生一些開銷,不是嗎? 我一直都做錯了嗎?? - 或者這只是一些我不應該注意的風格嗎?
它不會在運行時產生開銷,因為編譯器存在轉換。 但這是不必要的。 所有你需要的是
if (doSomething()) {
// do stuff
}
對於那些不太熟悉語言並且沒有閱讀別人的代碼來了解什么是好風格的人來說,這是一種特殊的怪異。
你說它可以被認為是“壞習慣”並且返回類型顯然是布爾值是正確的。
他們很可能這樣做是為了維護類型安全,這是他們自己的特權。 也許供應商有一個約定,可以轉換每個具有返回類型的方法,以確保它們確實獲得了該類型。
轉換發生在編譯時而不是運行時,所以我會想到會產生非性能影響。 它只是代碼庫中的殘缺。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.