《编写高质量代码》读书笔记一
这些建议,我们读过之后,觉得很有必要来分享一下,希望可以帮到你。
少读书,多思考,提高对程序本身的认识。
建议 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: 不要只替换一个类