十四
將一個boolean值與一個true比較是一個恆等操作(直接返回該boolean變量的值)
例子
public class UEQ
{
boolean method (String string) {
return string
}
}
更正
class UEQ_fixed
{
boolean method (String string) {
return string
}
}
十五
常量字符串並不需要動態改變長度
例子
public class USC {
String method () {
StringBuffer s = new StringBuffer (
String t = s +
return t;
}
}
更正
把StringBuffer換成String
十六
字符串的分析在很多應用中都是常見的
例子
public class UST {
void parseString(String string) {
int index =
while ((index = string
System
}
}
}
參考資料
Graig Larman
Prentice Hall PTR
十七
條件操作符更加的簡捷
例子
public class IF {
public int method(boolean isDone) {
if (isDone) {
return
} else {
return
}
}
}
更正
public class IF {
public int method(boolean isDone) {
return (isDone ?
}
}
十八
例子
public class IFAS {
void method(boolean isTrue) {
if (isTrue) {
_value =
} else {
_value =
}
}
private int _value =
}
更正
public class IFAS {
void method(boolean isTrue) {
_value = (isTrue ?
}
private int _value =
}
十九
在循環體中實例化臨時變量將會增加內存消耗
例子
import java
public class LOOP {
void method (Vector v) {
for (int i=
Object o = new Object();
o = v
}
}
}
更正
在循環體外定義變量
import java
public class LOOP {
void method (Vector v) {
Object o;
for (int i=
o = v
}
}
}
二十
StringBuffer的構造器會創建一個默認大小(通常是
例子
public class RSBC {
void method () {
StringBuffer buffer = new StringBuffer(); // violation
buffer
}
}
更正
為StringBuffer提供寢大小
public class RSBC {
void method () {
StringBuffer buffer = new StringBuffer(MAX);
buffer
}
private final int MAX =
}
參考資料
Dov Bulka
Techniques
二十一
如果一個變量需要經常訪問
例子
public class USV {
void getSum (int[] values) {
for (int i=
_sum += value[i]; // violation
}
}
void getSum
for (int i=
_staticSum += value[i];
}
}
private int _sum;
private static int _staticSum;
}
更正
如果可能
你可以按下面的方法來修改getSum()方法
void getSum (int[] values) {
int sum = _sum; // temporary local variable
for (int i=
sum += value[i];
}
_sum = sum;
}
參考資料
Peter Haggar:
Addison Wesley
二十二
取反操作符(!)降低程序的可讀性
例子
public class DUN {
boolean method (boolean a
if (!a)
return !a;
else
return !b;
}
}
更正
如果可能不要使用取反操作符(!)
二十三
基於接口的設計通常是件好事
例子
public class INSOF {
private void method (Object o) {
if (o instanceof InterfaceBase) { } // better
if (o instanceof ClassBase) { } // worse
}
}
class ClassBase {}
interface InterfaceBase {}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26303.html