差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

Both sides previous revision 前次修改
下次修改 Both sides next revision
java:effective_java:methods:check_parameters_for_validity [2019/07/15 00:06]
tony
java:effective_java:methods:check_parameters_for_validity [2019/07/15 22:05]
tony
行 9: 行 9:
   * Constructor或是Factory物件:​ 都應該要檢查,否則會增加debug成本。   * Constructor或是Factory物件:​ 都應該要檢查,否則會增加debug成本。
   * Method: 應該要檢查,但有幾種例外 1. 不切實際;2. 效能開銷很大; 3. 和後續工作有重疊。   * Method: 應該要檢查,但有幾種例外 1. 不切實際;2. 效能開銷很大; 3. 和後續工作有重疊。
 +  * 針對拋出的例外,需加上註解說明。
 method中的第二點與第三點的界定很清楚,我比較有疑問的是如何定義不切實際。這種參數檢查如果不如預期,我們通常會拋出IllegalArgumentException、IndexOutOfBoundsException或是NullPointerException;而這種例外屬於programming errors。如果實際狀況根本不可能發生,是否這就代表著不切實際呢?​ 畢竟如果做這樣子的檢查,我就會需要有對應的測試。因此,目前我的想法如下:​ method中的第二點與第三點的界定很清楚,我比較有疑問的是如何定義不切實際。這種參數檢查如果不如預期,我們通常會拋出IllegalArgumentException、IndexOutOfBoundsException或是NullPointerException;而這種例外屬於programming errors。如果實際狀況根本不可能發生,是否這就代表著不切實際呢?​ 畢竟如果做這樣子的檢查,我就會需要有對應的測試。因此,目前我的想法如下:​
   * 如果client code根本不會有這種使用方式,caller method不需要做檢查。   * 如果client code根本不會有這種使用方式,caller method不需要做檢查。