目录
通用程序设计
涉及内容:
1.局部变量处理
2.控制结构
3.类库用法
4.各种数据类型用法
5.reflection和native method
1.最小化局部变量的作用域
1.最小化局部变量的作用域,最有力的方法就是在第一次使用它的地方声明.
2.几乎每个局部变量的声明都应该包含一个初始化表达式
如果没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止(try-catch例外).
如果循环后不再需要循环变量的内容, for循环就优先于while循环
2.for-each循环优先于传统for循环
// 传统for循环遍历集合
for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomething((Element) i.next()); // JDK1.5之前
}
// 遍历数组
for (int i = 0; i < a.length; i++) {
doSomething(a[i]);
}
JDK1.5之后for-each完全隐藏迭代器和索引变量,避免混乱和出错
// for-each 遍历数组或集合
// 代码更加简洁,同时预防bug
for (Element e : elements) {
doSomething(e);
}
但以下3种常见情况无法使用for-each
1.过滤, 如果需要遍历集合并删除指定的元素
2.转换,如果需要遍历集合并取代它的部分或全部的元素值
3.平行迭代,如果需要并行地遍历多个集合
3.了解和使用类库
不要重复造轮子
4.需要精确答案,避免使用float和double
float和double类型不适合用于货币计算,如果从事金融领域的业务开发,有涉及到金钱的计算更应该避免使用这两种类型.
可以使用BigDecimal, int或long进行货币计算.
5.基本类型优于装箱类型
Java有8种基本类型,同时对应8种装箱类型.
6.如果其他类型更合适,尽量避免使用字符串
1.字符串不适合代替其他的值类型
程序从网络、文件等读取数据后,通常以字符串形式存在.有一种自然倾向是让它继续保留字符形式,但只有这段数据确实是文本信息时才是合理的.
如果它是数值,就应该被转换为适当的数据类型,比如int, float.
2.字符串不适合代替枚举类型
3.字符串不适合代替聚集类型
4.字符串不适合代替capabilities
7.小心字符串连接的性能
8.通过接口引用对象
// 声明变量时应使用接口类型而不是具体的类型
// good use interface as type
List<String> ls1 = new ArrayList<>();
// bad use class as type
ArrayList<String> ls2 = new ArrayList<>();
9.接口优先于反射机制
使用反射的劣势
1.时区编译时的类型检查
2.执行反射访问的代码非常的冗长,阅读性差
3.性能损失
10.慎用native method
没遇到过