我通常喜歡將我的局部變量聲明爲final,但我看到重複模式,當我不得不在初始化期間處理異常時無法執行此操作。本地變量不能被定義爲最終的,因爲在初始化時捕獲異常
對於離我有這樣的代碼:
final Client myClient = library.getClient("service");
//do a bunch of steps with myClient
但我最終經常修改這樣的:
Client myClient = null;
try {
myClient = library.getClient("service");
} catch (someException ex) {
// handle
throw ex;
}
// do stuff with myClient
我不想添加抓我做的所有的東西后,因爲它接近尾聲變得有點難以理解。那麼有沒有更好的方法來做到這一點?
我會傾向於讓這種方法'static',因爲它不要求訪問實例字段。 – Bohemian
@Bohemian - 看起來'library'是一個實例字段,並且'handle'中的任何內容都可能需要訪問實例方法和/或字段。如果不是,那麼肯定,它可以是「靜態」。但是,基本思想是將創建「客戶端」所需的處理過程轉換爲單獨的方法(靜態或非靜態)。 –