欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-23 18:25:03
...

编程质量提高建议总结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.多总结