向更高层次迈进!养成良好的习惯与技巧.结合本人的经验和理解,总结出了以下良好的开发习惯和技巧,向更高层次迈进!本人会经常更新此贴,希望朋友们一起热烈的讨论,共同进步,开心交流^-^
1.注释 为代码加注释,是一个良好的习惯。随着时间的流逝,有的时候,自己加的注释可能都记不清楚了。为代码加注释,既是为了自己,也是为了他人。笔者在接管同事代码的时候,就出现过“无注释”的代码段,维护起来真是痛苦之极。
2.知识管理 把开发中,解决的难题,小demo,小心得,都沉淀下来。为以后开发提供宝贵的参考。所谓:“公预善其事,必先利起器”,“磨刀不误砍柴工”。好多人干了若干年开发,仍然是在重复以前的的工作,就是因为没有把知识管理、积累起来。可以发发论坛,既是贡献别人,也是为自己积蓄能量。自己整理笔记以后要是碰到了类似的问题,没必要废脑细胞去思考,而是把精力集中在更高层次的目标上,这样是不是更好呢?
3.格式化代码 使用Eclipse或者其他基于eclipse开发的收费开发工具的朋友都知道,ctrl+shift+f可以格式化代码,自动为你对齐。这也是个很良好的习惯。这样代码直观看上去,会很舒畅。方便自己,方便他人。当然,只自动的格式化设置也不是最理想的效果,有些地方还是需要手工的去缩进代码,要使用tab来缩进,而不是空格.这样代码看上去会很清晰.
4.良好的命名规范和编程规范 随着软件工程和软件开发技术的发展,现在行业内出现了许多命名和编程规范。但有些规范还是通用的。
1)驼峰式命名;
2)英文单词命名,尽量避免中文拼音和无意义的命名;
3)不要使用goto语句;
针对JAVA语言,更有一些特定的命名规范:
1) 包名:简单,小写
2) 类,接口:首字母大写
3) 方法:首字母小写,驼峰式命名
4) 常量:全部大写,单词之间用下划线分隔
5) 局部变量:一般都是单词首字母或者缩写
6)……
5.闹钟定时休息 身体是革命的本钱,有的时候短短10分钟的休息,可以大大的提高你的工作效率并缓解你的压力。上午10点,下午15点左右,是不是该休息休息呢?即使是晚上奋战,那更应该注意平时规律的休息。
6.懂得分享和感恩 在论坛上看到别人写的好帖,要懂得感恩;自己有了心得体会,要懂得与人分享.这样才能构造一个良好的学习交流环境.
7.编程小技巧 有时候在面试的时候,你回经常被测试去做非常easy的小程序?但你知道其中的奥妙有多少呢?其实一个是看你的编程思路,一个是看你的代码规范,更重要的是看你是否老练。
1)空字符串判断
String obj = null;
System.out.println("".equals(obj)); // 推荐,老程序员都会这么写来回避NullPointerException
System.out.println(obj.equals(obj)); // 空指针异常
2)指定具体的Exception,而不是所有异常的捕捉方式都一样。如果在面试中,考官让你写个非常非常简单的JDBC连接程序,你会觉得这么easy的程序还考我?其实你并没有领会到其中的奥妙,你写完的程序和下面的对比之后,你会得到什么启发呢?是不是具体的Exception捕捉,看上去程序逻辑更清晰一些呢?
import java.sql.*;
public class TestJDBC {
public static void main(String[] args) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
Class.forName(" oracle.jdbc.OracleDriver ");
// new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:TEST , scott , tiger");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from dept ");
while (rs.next()) {
System.out.println(rs.getString("deptno"));
System.out.println(rs.getInt(" deptno"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
rs = null;
stmt = null;
conn = null;
e.printStackTrace();
}
}
}
}
3)字符串拼接尽量使用 StringBuffer 的append方法来拼接。而直接使用”+”来连接String类型。会增加内存和CPU的开销。String字符串拼接的原理如下 String str1 = “a”; String str2 = “b”; str1 = str1 + str2; 内存上,他先会开辟出一个新的内存空间,存放str3 = str1+str2,然后再把str3的引用交给str1.如果使用StringBuffer呢?则是在str1后面“接”上的,完成过程只后str1,str2俩个对象。 CPU上,想必写个循环1000次的拼接程序,大家就会明显的看出来吧。下面代码,运行看看吧。
//1秒=1000毫秒
public class Test {
public static void main(String[] args) {
String str = "";
StringBuffer sb = new StringBuffer();
long start = 0L;
long end = 0L;
start = System.currentTimeMillis();
for (int i = 0; i < 9999; i++) {
str = str + "a";
}
end = System.currentTimeMillis();
System.out.println("使用string的时间是:" + (end - start) + "毫秒!");
start = System.currentTimeMillis();
for (int i = 0; i < 9999; i++) {
sb.append("a");
}
end = System.currentTimeMillis();
System.out.println("使用StringBuffer的时间是:" + (end - start) + "毫秒!");
}
}
4)能实现接口的,就不要去继承类,以内接口可以多继承.具备更好的扩展性.比如多线程的Runnable接口和Thread类的选择,我们就应该选择实现接口,而不是去继承类.
5)尽量少使用System.out.println();我们知道,数据库在处理数据的时候,一次处理几十万,甚至百万,千万条是经常出现的。下面的例子可以看出,打印的IO操作,是很浪费资源的.
public class Test {
public static void main(String[] args) {
String str = "";
StringBuffer sb = new StringBuffer();
long start = 0L;
long end = 0L;
start = System.currentTimeMillis();
for (int i = 0; i < 999; i++) {
str = str + "a";
System.out.println(str);
}
end = System.currentTimeMillis();
System.out.println("使用打印的的时间是:" + (end - start) + "毫秒!");
start = System.currentTimeMillis();
for (int i = 0; i < 999; i++) {
str = str + "a";
}
end = System.currentTimeMillis();
System.out.println("没有用打印的的时间是:" + (end - start) + "毫秒!");
}
}
1.注释 为代码加注释,是一个良好的习惯。随着时间的流逝,有的时候,自己加的注释可能都记不清楚了。为代码加注释,既是为了自己,也是为了他人。笔者在接管同事代码的时候,就出现过“无注释”的代码段,维护起来真是痛苦之极。
2.知识管理 把开发中,解决的难题,小demo,小心得,都沉淀下来。为以后开发提供宝贵的参考。所谓:“公预善其事,必先利起器”,“磨刀不误砍柴工”。好多人干了若干年开发,仍然是在重复以前的的工作,就是因为没有把知识管理、积累起来。可以发发论坛,既是贡献别人,也是为自己积蓄能量。自己整理笔记以后要是碰到了类似的问题,没必要废脑细胞去思考,而是把精力集中在更高层次的目标上,这样是不是更好呢?
3.格式化代码 使用Eclipse或者其他基于eclipse开发的收费开发工具的朋友都知道,ctrl+shift+f可以格式化代码,自动为你对齐。这也是个很良好的习惯。这样代码直观看上去,会很舒畅。方便自己,方便他人。当然,只自动的格式化设置也不是最理想的效果,有些地方还是需要手工的去缩进代码,要使用tab来缩进,而不是空格.这样代码看上去会很清晰.
4.良好的命名规范和编程规范 随着软件工程和软件开发技术的发展,现在行业内出现了许多命名和编程规范。但有些规范还是通用的。
1)驼峰式命名;
2)英文单词命名,尽量避免中文拼音和无意义的命名;
3)不要使用goto语句;
针对JAVA语言,更有一些特定的命名规范:
1) 包名:简单,小写
2) 类,接口:首字母大写
3) 方法:首字母小写,驼峰式命名
4) 常量:全部大写,单词之间用下划线分隔
5) 局部变量:一般都是单词首字母或者缩写
6)……
5.闹钟定时休息 身体是革命的本钱,有的时候短短10分钟的休息,可以大大的提高你的工作效率并缓解你的压力。上午10点,下午15点左右,是不是该休息休息呢?即使是晚上奋战,那更应该注意平时规律的休息。
6.懂得分享和感恩 在论坛上看到别人写的好帖,要懂得感恩;自己有了心得体会,要懂得与人分享.这样才能构造一个良好的学习交流环境.
7.编程小技巧 有时候在面试的时候,你回经常被测试去做非常easy的小程序?但你知道其中的奥妙有多少呢?其实一个是看你的编程思路,一个是看你的代码规范,更重要的是看你是否老练。
1)空字符串判断
String obj = null;
System.out.println("".equals(obj)); // 推荐,老程序员都会这么写来回避NullPointerException
System.out.println(obj.equals(obj)); // 空指针异常
2)指定具体的Exception,而不是所有异常的捕捉方式都一样。如果在面试中,考官让你写个非常非常简单的JDBC连接程序,你会觉得这么easy的程序还考我?其实你并没有领会到其中的奥妙,你写完的程序和下面的对比之后,你会得到什么启发呢?是不是具体的Exception捕捉,看上去程序逻辑更清晰一些呢?
import java.sql.*;
public class TestJDBC {
public static void main(String[] args) {
ResultSet rs = null;
Statement stmt = null;
Connection conn = null;
try {
Class.forName(" oracle.jdbc.OracleDriver ");
// new oracle.jdbc.driver.OracleDriver();
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:TEST , scott , tiger");
stmt = conn.createStatement();
rs = stmt.executeQuery("select * from dept ");
while (rs.next()) {
System.out.println(rs.getString("deptno"));
System.out.println(rs.getInt(" deptno"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
rs = null;
stmt = null;
conn = null;
e.printStackTrace();
}
}
}
}
3)字符串拼接尽量使用 StringBuffer 的append方法来拼接。而直接使用”+”来连接String类型。会增加内存和CPU的开销。String字符串拼接的原理如下 String str1 = “a”; String str2 = “b”; str1 = str1 + str2; 内存上,他先会开辟出一个新的内存空间,存放str3 = str1+str2,然后再把str3的引用交给str1.如果使用StringBuffer呢?则是在str1后面“接”上的,完成过程只后str1,str2俩个对象。 CPU上,想必写个循环1000次的拼接程序,大家就会明显的看出来吧。下面代码,运行看看吧。
//1秒=1000毫秒
public class Test {
public static void main(String[] args) {
String str = "";
StringBuffer sb = new StringBuffer();
long start = 0L;
long end = 0L;
start = System.currentTimeMillis();
for (int i = 0; i < 9999; i++) {
str = str + "a";
}
end = System.currentTimeMillis();
System.out.println("使用string的时间是:" + (end - start) + "毫秒!");
start = System.currentTimeMillis();
for (int i = 0; i < 9999; i++) {
sb.append("a");
}
end = System.currentTimeMillis();
System.out.println("使用StringBuffer的时间是:" + (end - start) + "毫秒!");
}
}
4)能实现接口的,就不要去继承类,以内接口可以多继承.具备更好的扩展性.比如多线程的Runnable接口和Thread类的选择,我们就应该选择实现接口,而不是去继承类.
5)尽量少使用System.out.println();我们知道,数据库在处理数据的时候,一次处理几十万,甚至百万,千万条是经常出现的。下面的例子可以看出,打印的IO操作,是很浪费资源的.
public class Test {
public static void main(String[] args) {
String str = "";
StringBuffer sb = new StringBuffer();
long start = 0L;
long end = 0L;
start = System.currentTimeMillis();
for (int i = 0; i < 999; i++) {
str = str + "a";
System.out.println(str);
}
end = System.currentTimeMillis();
System.out.println("使用打印的的时间是:" + (end - start) + "毫秒!");
start = System.currentTimeMillis();
for (int i = 0; i < 999; i++) {
str = str + "a";
}
end = System.currentTimeMillis();
System.out.println("没有用打印的的时间是:" + (end - start) + "毫秒!");
}
}