`
liuzhaodong89
  • 浏览: 60368 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java编程中写出好代码的建议

阅读更多

最近在做应用的性能优化,在review代码的过程中积累了一些规则和经验。做到这些规则的目的很简单,就是写出“优美”的代码来。

 

1、注释尽可能全面

     对于方法的注释应该包含详细的入参和结果说明,有异常抛出的情况也要详细叙述;类的注释应该包含类的功能说明、作者和修改者。

 

2、多次使用的相同变量最好归纳成常量

     多处使用的相同值的变量应该尽量归纳为一个常量,方便日后的维护。

 

3、尽量少的在循环中执行方法调用

     尽量在循环中少做一些可避免的方法调用,这样可以节省方法栈的创建。例如:

for(int i=0;i<list.size();i++){
  System.out.println(i);
}

     可以修改为:

for(int i=0,size=list.size();i<size;i++){
  System.out.println(i);
}

 

4、常量的定义可以放到接口中

     在Java中,接口里只允许存在常量,因此把常量放到接口中声明就可以省去public static final这几个关键词。

 

5、ArrayList和LinkedList的选择

     这个问题比较常见。通常程序员最好能够对list的使用场景做出评估,然后根据特性作出选择。ArrayList底层是使用数组实现的,因此随机读取数据会比LinkedList快很多,而LinkedList是使用链表实现的,新增和删除数据的速度比ArrayList快不少。

 

6、String,StringBuffer和StringBuilder

     这个问题也比较常见。在进行字符串拼接处理的时候,String通常会产生多个对象,而且将多个值缓存到常量池中。例如:

String a="a";
String b="b";
a=a+b;

    这种情况下jvm会产生"a","b","ab"三个对象。而且字符串拼接的性能也很低。因此通常需要做字符串处理的时候尽量采用StringBuffer和StringBuilder来。

 

7、包装类和基本类型的选择

     在代码中,如果可以使用基本数据类型来做局部变量类型的话尽量使用基本数据类型,因为基本类型的变量是存放在栈中的,包装类的变量是在堆中,栈的操作速度比堆快很多。

 

8、尽早的将不再使用的变量引用赋给null

     这样做可以帮助jvm更快的进行内存回收。当然很多人其实对这种做法并不感冒。

 

9、在finally块中对资源进行释放

     典型的场景是使用io流的时候,不论是否出现异常最后都应该在finally中对流进行关闭。

 

10、在HashMap中使用一个Object作为key时要注意如何区分Object是否相同

     在jdk的HashMap实现中,判断两个Object类型的key是否相同的标准是hashcode是否相同和equals方法的返回值。如果业务上需要对两个数据相同的内存对象当作不同的key存储到hashmap中就要对hashcode和equals方法进行覆盖。

 
分享到:
评论
2 楼 liuzhaodong89 2012-06-13  
mysaber 写道
第3个,是内存换效率吗?本人菜鸟,试了下,依次从10~10万个数据,好像差不多,请问怎么能模拟出不考虑运行时机器性能的情况来比较?还有求原理


嗯,可以理解为内存换效率。实际应用中从性能上讲栈的压入和弹出是很快的,即使你在for循环中使用list.size()这种写法对于程序的真实运行性能也不会有太大的损伤。之所以把这条列出来其实是一种平时工作中总结的很多优秀程序员写代码的风格:要把程序的性能尽最大可能进行提升。有时候同一段代码,一个7年经验的和一个2年经验的写出来性能就是有差距,而不同的地方往往都是一些细节。jvm现在做了很多的优化,但是程序员本身我觉得还是不要完全依赖于这些优化。程序员首先是需要关注自己的代码,其次再依靠jvm的优化帮助自己避免一些问题。
1 楼 mysaber 2012-05-31  
第3个,是内存换效率吗?本人菜鸟,试了下,依次从10~10万个数据,好像差不多,请问怎么能模拟出不考虑运行时机器性能的情况来比较?还有求原理

相关推荐

    java编程思想第四版源代码.7z

    《Java编程思想》是 Bruce Eckel 的经典著作,第四版更是深入浅出地介绍了Java语言的核心概念和技术。这个压缩包包含的源代码是书中的示例程序,它们旨在帮助读者理解书中阐述的各种编程原理和实践。通过分析这些源...

    java程序40例 源代码

    本压缩包包含了40个基于Swing的Java程序源代码,旨在帮助初学者深入理解Java编程,并通过实例学习Swing组件的使用。 Swing是Java AWT(Abstract Window Toolkit)的扩展,提供了更为灵活和美观的组件。这些源代码...

    java基本程序代码

    10. **集合框架**:ArrayList、LinkedList、HashMap等集合类是Java编程中不可或缺的工具,用于存储和管理对象。 11. **多线程**:Java内置了多线程支持,理解线程的创建、同步和互斥,能让你编写出能充分利用多核...

    万年历Java程序源代码

    Java实现对万年历的编写和开发,给出了详细的源代码和代码注释文档

    用java写的代码雨

    Java编程语言以其强大的功能和广泛的应用领域而闻名,它可以用于创建各种类型的应用程序,包括桌面应用、Web应用以及移动应用。在这个场景中,我们关注的是一个特别的Java应用程序,它实现了"代码雨"效果,也就是在...

    java代码实现动态爱心代码示例

    在Java编程语言中,我们可以利用控制台输出来创建各种图形,包括动态的爱心形状。这里提供的代码示例展示了如何在命令行界面通过简单的数学运算和循环结构生成一个静态的爱心图案。下面,我们将深入探讨这个Java代码...

    java编程艺术代码

    Java编程艺术是许多Java初学者和开发者的重要参考书籍,它深入浅出地讲解了Java语言的基础和高级特性。配合本书的代码示例,读者能够更好地理解理论知识,并将其转化为实践。下面将详细阐述这些知识点: 1. **基础...

    JAVA程序代码_设计模式大全

    通过学习和实践这些代码和设计模式,你可以提升对Java编程的理解,学会如何写出高效、可扩展和易于维护的代码。设计模式的应用不仅能使你的代码更加专业,还能提高团队间的沟通效率,因为大家都遵循相同的设计原则和...

    164个完整的Java源程序代码

    这个"164个完整的Java源程序代码"集合提供了一个丰富的学习资源,涵盖了多种Java编程概念和技术。通过研究这些源代码,我们可以深入理解Java编程的核心原理,并提升实际编程技能。 首先,这些Java源代码可能包括了...

    Java面向对象程序设计课本例题源代码

    《Java面向对象程序设计》是Java编程学习的重要教材,作者张亦辉以其深入浅出的讲解方式,引领读者进入面向对象的世界。这份压缩包包含了书中各个章节的例题源代码,是学习和理解Java面向对象编程概念的宝贵资源。...

    JAVA写的超级马里奥源代码

    源代码中包含了“素材资源”,这意味着游戏中用到的图像、声音等元素都已包含在内。这些资源通常以图片文件(如PNG或JPEG)、音频文件(如WAV或MP3)等形式存在,开发者会通过Java的多媒体API如javax.sound和javax....

    5款工具助你写出更好的Java代码

    在Java开发过程中,选择...对于想要提升Java编程技能的开发者,熟悉并掌握这些工具是非常有益的。在广州Java培训中,你可以学习如何有效利用这些工具,提升你的编程能力和工作效率,为你的程序员生涯打下坚实的基础。

    Java 并发编程实战 中英文+代码示例

    通过阅读《Java 并发编程实战》,开发者将能够掌握Java并发编程的核心概念和最佳实践,提升在多线程环境下的编程能力,从而写出更高效、更稳定的并发应用程序。无论是初学者还是经验丰富的开发人员,都能从中...

    agileJava 程序代码

    在《敏捷Java》的程序代码中,我们可以学习到如何将敏捷理念融入到日常编程中。例如,代码可能会展示如何使用TDD(测试驱动开发)编写单元测试,确保代码的质量和可维护性。TDD要求先写测试,再编写实现测试通过的...

    Java核心源代码

    Java核心源代码是Java编程语言的核心组成部分,它包括了大量的类库和API,这些构成了Java开发的基础框架。在Java中,"以java开头的包"通常指的是Java标准库,这是一个庞大的集合,涵盖了各种功能,从基本的数据类型...

    Java趣味编程100例源代码

    总的来说,"Java趣味编程100例源代码"是一本极好的学习资源,它将理论与实践相结合,让学习者在娱乐中提升Java编程技能。通过阅读和实践每个示例,读者不仅可以巩固基础知识,还能锻炼解决实际问题的能力,为今后的...

    Java程序设计语言源代码

    异常处理是Java编程中的关键部分,通过try-catch-finally结构来捕获和处理程序运行时可能出现的错误。在描述中提到的"异常",意味着源代码可能包含各种异常类的实例,以及如何优雅地处理这些异常以保证程序的健壮性...

    JAVA程序设计教程实验代码

    在本Java程序设计教程实验代码中,我们主要探讨的是与Java编程相关的实验实践,这些实践是针对大学级别的JAVA课程设计的。实验代码是作者自己完成并经过测试运行的,因此可以确保其有效性,为学习者提供了可靠的学习...

    Java聊天程序实现代码

    在实际代码中,可以看到它们是如何使用Java的网络API来实现聊天功能的。 **总结** 实现一个Java聊天程序涉及对Java网络编程的理解,包括使用ServerSocket和Socket进行通信,以及通过InputStream和OutputStream传递...

Global site tag (gtag.js) - Google Analytics