细述Java技术开发规则--中级篇
2008-01-05 20:19:54 来源:WEB开发网本文介绍的java规则的说明分为3个主要级别,中级是平时开发用的比较多的级别,在今后将陆续写出其他的规则。遵守了这些规则可以提高程序的效率、使代码又更好的可读性等。
一、在finally方法里关掉input或者output资源,方法体里面定义了input或者output流的话,需要在finally里面把它关掉。
以下这几种调用不需要遵守这条规则,因为colse()方法不起作用:
java.io.StringWriter
java.io.ByteArrayOutputStream
java.io.ByteArrayInputStream
假如再方法返回的时候没有调用close()方法来释放input()和output()的资源的话,会导致一个系统资源泄漏。而且在任何情况下都要确定在返回全调用了close()方法,包括出现异常的时候。所以需要在finally方法里面加入这个方法。这样就保证了在任何情况下都会关闭资源。
错误示例:
public class CIO
{
public void method (java.io.File f)
{
java.io.FileInputStream fis = null;
try
{
fis = new java.io.FileInputStream (f);
fis.read ();
fis.close ();
} catch (java.io.FileNotFoundException e1)
{
System.out.PRintln("File not found");
} catch (java.io.IOException e2)
{
System.out.println("I/O Exception");
}
// 假如出现异常,这里就不能保证关闭资源。
}
}
修正后的代码:
public class CIOFixed
{
public void method (java.io.File f)
{
java.io.FileInputStream fis = null;
try {
fis = new java.io.FileInputStream(f);
fis.read ();
} catch (java.io.FileNotFoundException e1)
{
System.out.println("File not found");
} catch (java.io.IOException e2)
{
System.out.println("I/O Exception");
} finally
{
if (fis != null)
{
try
{
fis.close ();
}
catch (java.io.IOException e)
{
System.out.println("I/O Exception");
}
}
}
}
}
二、else的注重问题
一般总认为假如if语句只有一句的话,那么{}就是可要可不要的了。可是假如if有else嵌套的话,就不一样了,{}是必需的
错误示例:
if (i < 5)
if (i < 2)
i++;
else
i--;
修改后:
if (i < 5)
{
if (i < 2)
i++;
}
else
{
i--;
}
三、不要再catch()块里什么代码也不放
在catch()块里面放入一些错误处理代码是一个好的习惯。但是假如catch()里面有有关javadoc 的代码,那也是可以的。
错误示例:
try {
System.in.read ();
} catch (java.io.IOException e)
{
// 错误
}
正确:
try {
System.in.read ();
} catch (java.io.IOException e)
{
System.out.println("Descriptive error");
}
四、不要在if条件里面附值
假如这样做的话,系统会报告错误。在java的很多条件声明里面用附值是很不明智的,而且系统也会报告错误。很轻易引起异常。遵守这条规者能够使维护简单,避免不一致。
更多精彩
赞助商链接