《編寫高質量代碼》讀書筆記一
這些建議,咱們讀過以後,以爲頗有必要來分享一下,但願能夠幫到你。
少讀書,多思考,提升對程序自己的認識。
建議 1: 不要在常量和變量中出現容易混淆的字母
public class Client {
public static void main(String[] args)} {
long i = 1l;
System.out.println("Double i is: " + (i+i));
}
}
實際結果:2
--------------------------------------
注意:字母「l」做爲長整型標誌時務必大寫。
--------------------------------------
建議 2: 莫讓常量蛻變成變量
public class Client {
public void mani (String[] args) {
System.out.println("Const is: " + Const.RAND_CONST);
}
}
interface Const {
public static final int RAND_CONST = new Random().nextInt();
}
--------------------------------------
注意:務必讓常量的值在運行期保持不變。
--------------------------------------
建議 3: 三元操做符的類型必一致
public class Client {
int i = 80;
String s = String.valueOf(i<100?90:100);
String s1 = String.valueOf(i<100?90:100.0);
System.out.println("Both equal: "+s.equals(s1));
}
實際結果:false
String s1 = String.valueOf(i<100?90:100.0);// 100.0是浮點型
建議 4: 避免帶有變長參數的方法重載
public class Client {
//Method 1
public void calPrice(int price, int discount) {
//TODO
}
//Method 2
public void calPrice(int price, int... discounts) {
//TODO
}
public static void main(String[] args) {
Client client = new Client();
client.calPrice(49900, 75);
}
}
哪一個方法會被call? 爲何?
來問我啊,哈哈哈哈
建議 5: 別讓null值和空值威脅到變長方法
public class Client {
}
建議 6: 覆寫變長方法也循規蹈矩
建議 7: 警戒自增的陷阱
建議 8: 不要讓舊語法困擾你
建議 9: 少用靜態導入
建議 10: 不要在本類中覆蓋靜態導入的變量和方法
建議 11: 養成良好習慣,顯式聲明UID
建議 12: 避免用序列化類在構造函數中爲不變量賦值
建議 13: 避免爲final變量複雜賦值
建議 14: 使用序列化類的私有方法巧妙解決部分屬性持久化問題
建議 15: break萬萬不可忘
建議 16: 易變業務使用腳本語言編寫
建議 17: 慎用動態編譯
建議 18: 避免instanceof非預期結果
建議 19: 斷言絕對不是雞肋
建議 20: 不要只替換一個類
dom