`
suhuanzheng7784877
  • 浏览: 691680 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47234
社区版块
存档分类
最新评论

编程质量提高建议总结1(持续总结)

阅读更多

编程质量提高建议总结1(持续总结)

1.混淆字母要明显

比如

long i = 1l;

最好写成

long i = 1L;

字母意义突出明显。

2.常量定义不要包含非常量因子

final static long a = 当前日期的long数值

3.变长方法重载JVM优先采用最精确的重载方法

4.变长参数如果调用者传的是null,那么就不好应付了,应该是让JVM知道客户端显示调用的是哪个类型的变长参数,哪怕值是null,都可以编译过去。

5.自增操作千万不要和自己赋值在一起

a=a++;

这种操作是十分不可取的。

6.如果自身的静态变量与import的静态变量有冲突,则JVM编译器会遵循最短路径的原则使用静态值。

7.final变量尽量单纯

8.switch-case-别忘记break

9.在实际开发中,如果某个历史类class文件变更了,最好重新build整个项目,否则,可能造成的现象是:牵一发而错全身。

10.判断奇偶数用偶数作为标准

11.数值位数敏感的使用NumberFormat工具进行格式处理

NumberFormat f = new DecimalFormat("#.##");

f.format(10.00-9.60)

或者使用更加敏感的数值运算BigDecimal类型,或者直接使用整形扩大1000倍,运算后再缩小1000倍。

12.数值运算时注意数值类型的最大值,一般发生在intlong之间存在运算的时候

13.int或者long的最大值与其他的数值参与运算的时候,会发生不能预期的效果

14.对于外界的参数值永远抱着怀疑、需要验证的态度,包括null空指针异常

15.==<>的操作符要注意。==相对于对象只是比较指针(物理地址),在简单数值类型中比较的是数值,而<>只能用于数值的包装类或者简单数值。

16.Integer使用时,在数值-128127之间的数会被缓存到整型池中。

17.数值使用的时候,如果没有什么复杂的运算逻辑,使用原型,最好

18.对象展现为2面,一面是具体实际类型,一种是表面类型。在实例方法被调用的时候展现出来的是实际类型,静态方法被调用的时候展现出来的是表面类型。

19.面向对象的设计原则,对象的构造函数要尽量简单,不要含有复杂的业务逻辑,仅仅就是初始化成员变量。

20.执行块语句{}可以提炼出重复的业务逻辑,构造函数都是先执行执行块语句再在自己的逻辑中执行。

21.保证工具类不能实例化,反射也不能调到构造函数

private A(){throw new Error("错误,不能实例化工具类");}

22.覆写toString方法输出的内容有助于程序调试

23.不到万不得已,不要手工FullGC

24.为了编码统一,一律调成UTF-8编码

25.变长数组采用数组拷贝的原理完成扩容的

26.泛型要规范使用,尤其是集合,数组操作的时候,泛型一定要加上。淘汰无泛型的时代

27.Array为底层实现的集合,在遍历的时候使用下标for循环的效率比较高,因为实现了随机读取接口,表明元素间无任何上下行关系。如果以链表结构方式实现的集合,最好使用for-each的方式遍历,底层使用迭代器模式,适用于链表的形式。

28.两个不同类型的集合,只要是里面的元素相等,比较结果就想等。

29.ListasList方法生成的List只读,不能做任何的addremove的变更性操作。

30.List的子列表仅仅是原始列表的视图,子列表依然保持元列表元素的引用,使用子列表处理局部元素数据的时候效率更高。

31.二分查找算法使用的前提是元素是已经按照一定的规律排序好的

32.ArrayListHashMap底层都是基于数组实现,ArrayList扩容是1.5倍,而HashMap扩容则是2倍。

33.集合中TreeSet排序需要使用List解决,Collections.sort()list进行重新排序。

34.commons-collectionsgoogle-collections是值得拿来使用的比JDK提供的自身集合类要优越的集合工具包。

35.Java的泛型在编译期间有效,运行期间会被擦除

36.反射机制性能不一定差,有人提出没有因为反射而导致程序运行效率变差的。

37.按照系统业务需要封装自己的异常类,让运营维护的人员也能看得懂。

38.Java分层是不可避免的,构建良好的Exception异常链是决定软件可维护性的关键

39.JDK1.7之前,finally代码块最好仅仅作为资源的回收,不要做任何的逻辑处理或者返回操作。

40.最好将方法可能出现的异常作为显示的受检异常(接口规范中明确指定要抛出哪些异常)

41.线程的优先级数字的底层,依赖于操作系统对线程资源占CPU的具体实现。优先级一般是1510这三种等级体现最佳。

42.异步运算考虑使用Callable接口,实现该接口的call方法的返回值。可以得知线程运行的状况。通过配合Futuresubmit方法执行具有返回值的线程。可以控制并行计算的能力。

43.new对象比克隆对象效率高一些

44.位操作比直接的加减乘除操作要快几个数量级,但是可读性差

45.适时调控JVM参数

46.处理日期可以采用Joda工具包

47.开源技术的选型基本原则是:广而用之;社区背景硬;专一(做的有深度);唯一(不要让一个项目同时存在两个功能一样的开源框架)

48.永远保持代码+注释的好习惯

49.//TODO注释让开发人员只好还有什么没做的

50.多总结

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics