3個每個人都討厭的Java實踐 - Miloš

banq發表於2021-07-08

你使用靜態關鍵字嗎?你丟擲異常嗎?你把資料放在會話中嗎?這是三個每個人討厭的java實踐:
  1.   濫用靜態
  2. · 丟擲異常
  3. · 在會話中儲存所有內容

 

1. 你不應該濫用靜態
類包含靜態屬性。無需構造即可訪問屬性。
為什麼這很重要?靜態屬性不是變數,它們是常量。所有例項的常量。
靜態方法類似於過程化,這會破壞 OO 設計。
但是大多數Math庫方法都是靜態的,因為它們都是輔助方法,對輔助函式和實用函式使用靜態方法。
不要將靜態方法與多型混合。

直到最近,Mockito 才支援測試靜態方法:Mockito 更喜歡物件導向和依賴注入,而不是難以理解和更改的靜態程式程式碼。如果您處理可怕的遺留程式碼,您可以使用 JMockit 或 Powermock 來模擬靜態方法。
  

2.按預期丟擲異常
不要丟擲業務邏輯異常,把業務邏輯洩露到外部。
不要反覆丟擲相同異常。
最後辦法是翻譯轉化異常。
使用其他錯誤處理方法、謂詞或 Optionals 來顯示錯誤。異常應該通知錯誤、傳播翻譯後的錯誤或當場處理它們。
 

3. 不要將所有東西都儲存在會話中
Web 應用程式是無狀態的。會話為使用者建立一個狀態。在會話中儲存大量變數是不好的做法。你需要儲存使用者狀態嗎?使用會話,例如,身份驗證儲存在會話中。您需要儲存應用程式狀態嗎?使用快取而不是會話。
在會話中儲存資料本身並不是一個壞習慣。您需要在會話中儲存身份驗證。避免在會話中儲存其他資料。無狀態設計比有狀態應用程式有更多好處。會話使用記憶體,可能導致競爭條件,並可能導致執行緒問題。
會話的替代方法是什麼?會話的替代方案是:

  • 將會話儲存在快取中;以Map的形式
  • 將會話儲存在資料庫中



 

相關文章