2016-04-05 21 views
-1

目前我正在開發一個庫,它爲用戶提供了小而易於修改的對象。但是,某些整數字段可以設置爲auto/inherit。有兩個基本解決方案可以解決此問題:將特殊含義附加到無效值(例如,寬度/高度字段爲0),或者:使用Integer而不是int,該值可以爲null。可爲空的整數或帶有特殊值的整數

class SomeProperties { 

    // C-style 
    int someField = 0; 

    // ... 

} 

class SomeProperties { 

    // SQL-style 
    Integer someField = null; 

    // ... 

} 

我應該使用哪種,要考慮到幾個方面,特別是可讀性和性能?

+1

另一種選擇:使用'可選'。 –

+0

@AndyTurner:這就是'Integer'已經帶來的更多開銷(關於OP的具體用例)。 –

+0

@ T.J.Crowder除了你不會意外地將它用在你期望得到一個非空Integer的地方。 –

回答

2

我會使用空整型,因爲它:

  1. 不減少你的範圍
  2. 拋出的情況下,你使用它的地方例外它不應該被使用,而無效
  3. 減少堆空間(空指針與4字節的有效指針)

雖然這個問題是一種意見。