guava 學習筆記 使用瓜娃(guava)的選擇和預判斷使代碼變得簡潔

來源:互聯網
上載者:User

標籤:

1,本文翻譯自 http://eclipsesource.com/blogs/2012/06/06/cleaner-code-with-guava-optionals-and-preconditions/,有說的不對的地方,歡迎斧正。

2,我開發軟體的時候,朝著乾淨代碼發展是我的特權,有一段時間,我曾在我幾乎所有的項目中使用Google瓜娃(Google Guava),理由很簡單,guava為我編寫漂亮代碼提供了很大的便利,今天,我想向你展示下我是怎麼使用預判斷來避免不必要的if/throw 申明,使用選擇來提升代碼邏輯性。

  預判斷並不是新東西,Apache Commons項目有類似的功能,但是並沒有瓜娃提供的解決方案簡潔,預判斷用來驗證方法的參數,狀態等等,當條件判斷結果是false,預判斷就會拋出預想的異常,預想的意味著以下情形,當檢查狀態的時候,你可以使用Preconditions.checkState( 條件 ),如果條件判斷的結果是false,將會拋出非法狀態異常,同樣,另外一種預判斷checkArgument會拋出非法參數異常,當然,使用預判斷你唯一需要明確的時候就是使用靜態匯入,讓我們來看一個例子。

  給出的是一個方法,接受list作為參數,當這個方法被調用的時候,我們需要檢查list是不是null和是不是空,一般的java解決方案如下所示:

public void doSomething( List<Object> list ) {  if( list == null ) {    throw new IllegalArgumentException( "List must not be null" );  }  if( list.isEmpty() ) {    throw new IllegalArgumentException( "List must not be empty" );  }  doSomethingMore( list );}

當使用guava的預判斷,代碼的數量明顯減少,解決方案如下所示.

public void doSomething( List<Object> list ) {  checkArgument( list != null, "List must not be null" );  checkArgument( !list.isEmpty(), "List must not be empty" );  doSomethingMore( list );}

這肯定是一個提升,但是,當這個方法結合瓜娃的選擇變得真正的性感,選擇是一個概念,被設計來避免病態的null概念(閱讀這裡理解我為神馬叫她“病態”),這裡明顯有一個對象容器來避免Null 參考,例如,null 大部分時間用來檢查一個對象是不是存在,如果不存在,一個null 指標異常發生了,結果如以下代碼所示:

public void doSomething() {  if( this.field == null ) {    throw new IllegalStateException( "Field is not initialized" );  }  doSomethingMore();}

與其儲存這個對象直接放到field,我經常使用選擇.這避免了我代碼中的null 指標異常並且顯得更合文法,上面這個例子結合選擇變成了如下所示:

public void doSomething() {  checkState( field.isPresent(), "Argument is not initialied" );  doSomethingMore();}

最後,由你決定這個代碼是不是更好更簡潔,通過使用預判斷和選擇.從我的觀點來看,這麼寫更具有可讀性,我期待在評論中聽到你的觀點 .

guava 學習筆記 使用瓜娃(guava)的選擇和預判斷使代碼變得簡潔

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.