Effective Java 讀書筆記: Item 52 - 用 interface 宣告變數

這是一則順手做不花力氣, 但不做也無傷大雅的建議。

作者建議這麼寫:

List<String> names = new ArrayList<String>();

而非這麼寫:

ArrayList<String> names = new ArrayList<String>();

這樣若要替換實作方式時, 只需改一行程式即可。比方說從 single-thread 要改為 multi-thread, 只要改變產生 names 的程式:

List<String> names = new Vector<String>();

剩下用到 names 的程式都不用改。

以前我覺得這是理所當然該做的事, 甚至用這做為「是否具備 Java 常識」的指標之一。後來發覺實在是太多人不知道這個準則, 而開始重新思考究竟沒做到這件事會有什麼後果?

結論是: 其實不太嚴重, 一來這鮮少發生。二來若真有那麼一天需要換實作, 配合 IDE 也可以很快地改完 (static typing 萬歲!!)。雖說不遵守這個準則也無傷大雅, 我仍覺得照著做較好。如同之前在《養成寫程式的好習慣》所言, 做好許多這類小細節, 長久下來會少掉很多問題, 這類的成本是難以追蹤的。

留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

virtualbox 使用 USB 裝置

熟悉系統工具好處多多