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
}
}
- 浏览: 59331 次
- 性别:
- 来自: 南通
相关推荐
- **编译好的二进制文件**:可以直接运行在不同操作系统上,对Java代码进行格式化。 - **文档**:介绍如何安装、配置和使用`google-java-format`,以及与其他工具的集成方法。 - **测试用例**:验证`google-java-...
赠送源代码:snappy-java-1.1.8.2-sources.jar; 赠送Maven依赖信息文件:snappy-java-1.1.8.2.pom; 包含翻译后的API文档:snappy-java-1.1.8.2-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.xerial.snappy:...
JDBC是Java平台的一部分,允许Java程序通过Java代码来访问和操作数据库。MySQL Connector/J提供了一个接口,使得Java应用程序能够执行SQL语句,处理结果集,管理事务,并实现其他数据库交互功能。 在"mysql-...
MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。`mysql-connector-...
MySQL-connector-java-8.0.28 是MySQL数据库与Java应用程序之间通信的重要组件,它是一个JDBC(Java Database Connectivity)驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。在这个版本中,...
在上述代码中,我们连接到本地的MySQL服务器(假设其正在3306端口上运行),并访问名为"mydatabase"的数据库。我们还执行了一个简单的SELECT查询,并打印出结果集中的数据。 值得注意的是,随着时间的推移,MySQL ...
MySQL Connector/J是MySQL数据库系统与Java应用程序之间的重要桥梁,它是一个实现了JDBC(Java Database Connectivity)规范的驱动程序,使得Java开发者能够通过编写Java代码来访问、操作MySQL数据库。在这个特定的...
MySQL Connector/J 8.0.29 是MySQL数据库与Java应用程序之间通信的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够方便地在Java应用中连接并操作MySQL数据库。...
MySQL Connector/J是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了Java Database Connectivity (JDBC) API的驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。标题中的"mysql-...
2. **MySQL Connector/J的角色**:作为MySQL的JDBC驱动,它实现了JDBC接口,使得Java代码可以通过标准的JDBC调用来连接、查询和操作MySQL数据库。例如,使用`Class.forName()`加载驱动,然后通过`DriverManager.get...
1. **加载驱动**:在Java代码中通过`Class.forName()`方法加载`com.mysql.jdbc.Driver`类,注册驱动。 2. **建立连接**:使用`DriverManager.getConnection()`方法,传入数据库URL、用户名和密码,创建数据库连接。 ...
- 提供更好的性能,优化了网络通信和数据传输。 - 增强的SSL/TLS支持,确保数据在传输过程中的安全性。 - 对Java 8及更高版本的全面支持,包括Lambda表达式和Stream API的使用。 - 更好的线程安全性和并发处理能力,...
随着 MySQL 的发展,新的版本提供了更多的特性,如更好的性能优化、对新特性的支持,以及安全性改进等。因此,对于新项目或升级项目,通常建议使用更现代的驱动版本。 在实际开发中,我们还可以通过配置文件(如 `...
java代码-使用java解决抓取当前屏幕信息的源代码 ——学习参考资料:仅用于个人学习使用!
总的来说,"sonar-java-plugin-5.12.1.17771.rar"是一个强大的Java代码质量检查工具,它通过FindBugs插件增强了SonarQube的分析能力,是构建高效、安全代码审查体系的重要组成部分。对于注重代码质量和安全性的公司...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,而`mysql-connector-java-5.1.30`是MySQL官方为Java开发者提供的数据库连接驱动包。这个驱动包使得Java应用程序能够与MySQL数据库进行无缝通信,执行SQL查询,...
Eclipse Java是Eclipse IDE的一个重要组件,专为Java开发者设计,提供了丰富的代码编辑、调试、构建和测试工具。它支持Java SE、Java EE和Java ME应用程序的开发,同时兼容最新的Java语言特性,如模块化系统...
源代码的提供对于开发者来说非常有价值,因为它提供了更多的透明度,帮助开发者更好地理解和定制SDK的功能。 使用"taobao-sdk-java"时,开发者需要先注册成为淘宝开放平台的开发者,获取到API密钥(AppKey和App...
### Java代码优化技巧详解 #### 一、引言 在软件开发过程中,为了提升应用程序的性能,我们需要对Java代码进行优化。这是因为计算机系统的资源(如内存、CPU时间、网络带宽等)是有限的,而优化的目标就是使程序...
此版本是"ckeditor-java-core-3.5.3",专门针对Java平台进行了优化,允许开发者在Java应用程序中集成CKEditor的功能。 1. **CKEditor简介** CKEditor是一款基于JavaScript的WYSIWYG(所见即所得)文本编辑器,最初...