Java
Default Constructor Trap
1 2 3 4 5 6
| class Point { Point() { throw new UnsupportedOperationException(); } Point(int x, int y) {...} }
|
一開始不宣告就好了,當有自定義的建構子,預設建構子自然無法被使用,沒必要設一個陷阱讓別人踩。
Feature and Backward Compatibility
1 2 3 4 5 6
| class Engine { private String mFeature = ""; } class DbObj { private String mFeature = ""; }
|
空與空字串的意義不同,預設為空字串 (""
) 的狀況並不多見,為空 (null
) 在序列化和反序列化時的差異就很大了。
Fancy Check-and-Cast
1 2 3
| Shape shp; if (shp.getUserName().equals("circle")) return ((Circle) shp).getBound();
|
Call-By-Value
1 2 3 4 5
| void readColRow(int col, int row) { Pair p = readPair(); col = p.first; row = p.second; }
|
Java 沒有 reference type 的這操作。
Slow Feature
1 2 3
| void exec() { for (;;) {} }
|
我可不想跟客戶說「你再等等,這功能只是比較慢」的謊言。