`

如何写好代码----java代码优化

阅读更多

1. 什么是好的代码?
高效正确
便于维护
简洁清晰

2. 如何做?
让代码比你来时更干净
做有意义的命名
别重复自己
注意代码工整

记住:不要把自己当程序员,要把自己当成艺术家,出自你手的代码都是一件艺术品,尽量让她优雅。

3.原则
第一条,关于注释和文档
好的代码不需要注释和文档(不包括设计文档)。

我们要做的,尽量让你的代码简单易懂,如果实在做不到,一定添加简单易懂的注释文字。不要繁琐的长篇大论。

记住:代码里一切注释和文档都是浮云。

第二条,关于代码结构

不要为了实现需求不停的堆代码,讲究下技巧

多用面向对象和面向接口编程,以提高代码的扩展性和可维护性

多用用设计模式,以提高代码的可阅读性和灵活性,避免重复你的代码

记住:简单,优雅,清晰的代码是最能减轻工作量和减少出现问题的方法。

第三条,关于测试
如果可能,尽量让你所有的方法都有测试代码

如果可能,应用测试驱动开发

如果可能,尽量在发布程序的之前运行测试用例并保证没有问题

记住:没有测试的代码都是浮云

4. Tips
1.避免重复初始化。

test1
    HashMap map = new HashMap();
    
    public Test1(){
    //    map = new HashMap();
    }

    public static void main(String[] args) {
        int TT = 1000000;
        long t1 = System.currentTimeMillis();
        for(int i=TT; i>=0; --i) {
            Test1 t = new Test1();
        }
        System.out.println(System.currentTimeMillis()-t1);
        
    }

重复初始化时间:187 172
正常初始化时间: 94 93

test2
    public final static int max(int a, int b) {
        return (a>b)? a:b;
    }

    public static void main(String[] args) {
        final int TT = 1000000;
        int a = 5, b=10;
        int c;
        long t1 = System.currentTimeMillis();
        for(int i=TT; i>=0; --i) {
            c = max(a, b);
        }
        System.out.println(System.currentTimeMillis()-t1);
        long t2 = System.currentTimeMillis();
        for(int i=TT; i>=0; --i) {
            c = (a>b)? a:b;
        }
        System.out.println(System.currentTimeMillis()-t2);
        
    }

final 方法会使用内联方式进行编译,这样会提高性能,不过貌似新的JVM做了优化,第一次运行时会慢一些,以后非final和final性能差不多。

test3
NewObject object=new NewObject();
int value;
if(i>0) {
    value=object.getValue();
}
优化后:
int value;
if(i>0){
    NewObject object = new NewObject();
    Value = object.getValue();
}
就近原则,尽量采用Lazy loading策略,减少内存开销

test4

List?alist=uSvr.getUserinfoList();
for(int i=0;i<alist.size();i++){
。。。
}

优化后:
for(int i=0,p=alist.size();i<p;i++){
。。。
}
循环操作时,尽量使用局部变量,减少内存寻址时间
15 16
0  0


test5
    long t1 = System.currentTimeMillis();
    for (int i = 0; i < 10000000; i++) {
        Test1 t = new Test1();
    }
    System.out.println(System.currentTimeMillis() - t1);
        
    long t2 = System.currentTimeMillis();
    Test1 t = null;
    for (int i = 0; i < 10000000; i++) {
        t = new Test1();
    }
    System.out.println(System.currentTimeMillis() - t2);

减少循环New变量的操作,这种做法会在内存中保存N份这个对象的引用,会浪费大量的内存空间,增加GC
64 63
47 47

test6
避免在做最终条件比较时采用方法返回值的方式进行判断,这样做将增大系统开销,降低性能

while(isTrue()) {
...
}
优化后:
boolean isTrue= isTrue();
while(isTrue) {
...
}

test7
尽量避免在循环体中使用try-catch块,最好在循环体外进行try-cache以提高性能
do{
    try{
        ...
    } catch(Exception e){ }
}while(isTrue)
优化后
try{
    do {
        ...
    }while(isTrue)
}catch(Exception e){}

test8
在多重循环中,如果有可能,尽量将最他的循环放在最内层,最短循环放在最外层,以减少循环切换次数。
for (int i=0; i<100000; i++) {
    for(int j=0; j<10; j++) {
        ...
    }
}
优化后:
for (int j=0; j<10; j++) {
    for(int i=0; i<100000; i++) {
        ...
    }
}

test9
循环内有If-else类逻辑,最好将if-else逻辑判断移到循环体外,以提高性能。
for(int i=0; i<100000; i++)
    if(isTrue){
        doThis
    } else {
        doThat
    }
}
优化后:
if(isTrue) {
    for(int i=0; i<100000;i++) {
        doThis
    }
} else {
    for(int i=0; i<100000;i++) {
        doThat
    }
}

分享到:
评论

相关推荐

    JAVA代码优化工具

    JAVA代码优化工具,

    JAVA代码优化.txt

    JAVA代码优化 JAVA代码优化 JAVA代码优化 JAVA代码优化 JAVA代码优化

    java代码-使用java解决抓取当前屏幕信息的源代码

    java代码-使用java解决抓取当前屏幕信息的源代码 ——学习参考资料:仅用于个人学习使用!

    java代码优化简介

    可供程序利用的资源(内存、CPU时间...养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性能。下面我们就来具体地分析一下这方面的问题。 .....

    Java 实例 - 字符串优化源代码-详细教程.zip

    Java 实例 - 字符串优化源代码-详细教程.zip

    java代码效率优化

    java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码效率优化java代码...

    java代码优化编程

    可供程序利用的资源(内存、CPU时间...养成好的代码编写习惯非常重要,比如正确地、巧妙地运用 java.lang.String类和java.util.Vector类,它能够 显着地提高程序的性能。下面我们就来具体地分析一下这方面的问题。 ……

    Java代码优化细节总结

    代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃...

    java源码包---java 源码 大量 实例

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java代码优化笔记

    java代码开发代码优化整理笔记,仅供大家学习交流,如有侵权请尽快联系小编,如有不足,可发表评论,谢谢

    java代码优化大全

    可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定...优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。

    44条Java代码优化建议

    44条Java代码优化建议,值得阅读一遍、并实践; 44条Java代码优化建议,值得阅读一遍、并实践

    JAVA代码优化实用策略

    非常实用的java代码优化策略详解,从变量声明、初始化、字符串链接、异常处理、IO、数组等各个方面进行优化,非常有参考价值。

    JAVA代码性能优化

    java代码性能优化

    Java 代码优化常见注意点

    Java 代码优化常见注意点 别人在blog里总结出来的 拿来分享给大家[免分]

    通过java代码规范来优化程序

    通过java代码规范来优化程序

    java代码性能优化23种技巧

    java 代码 性能优化 23种技巧 经典 非常不错,一些我们没有注意的问题。

    29个要点帮你完成java代码优化

    通过java代码规范来优化程序,优化内存使用情况,防止内存泄露 可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小...

    pso程序的源代码-粒子群优化算法基本程序

    pso程序的源代码-粒子群优化算法基本程序

    代码 多目标粒子群优化算法代码

    代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法代码代码 多目标粒子群优化算法...

Global site tag (gtag.js) - Google Analytics