???????????д??????????????Щ??С??????????????????java?о?????????Щ????????

?????????????????Bug??????????????Щ?????????????????Ч???????????鱾????????????????????????????????е?????? Bug????????????????????Щ????????????????棬????????Щ????????????????????????????Щ????????????????????????????????????????????Java??????????????????????Щ????????飬????????????????????????Щ??????????????

???????????????????????????????????Щ?????????????????????????????????????????????????????????????????????????????????????????????????????????????е??????????????????????? ?????????????(code inspection)????????????????????????????????—??????????????е????—????????????????????????????????????????????????????????????

???????????????????????????????????????????????????????????????????????????Ч?????°???????????????У????г???11?? Java????г????????????????Щ?????????????????????б?(checklist)?У?????????????????????????????????в????????????????

???????????????1#????ο????????

???????????????????????????????????(immutable)??????????????????????????????????????????????????????????String??

?????????????????String??????????????????StringBuffer?????????????????????

String s = new String ("Text here");

???????????δ??????????????б?????????????????????μ???????д????????

String temp = "Text here"; String s = new String (temp);

??????????δ???????????String?????????????????????????

String s = "Text here";

????????????????2#????п????clone??????????

?????????encapsulation????????????????????????????Java???С??????????????——Java????????????????????reference?????????????????????

import java.awt.Dimension;
/***Example class.The x and y values should never*be negative.*/ public class Example{
private Dimension d = new Dimension (0?? 0);
public Example (){
}
/*** Set height and width. Both height and width must be nonnegative * or an exception is thrown.*/
public synchronized void setValues (int height??int width) throws IllegalArgumentException{ if (height < 0 || width < 0)
throw new IllegalArgumentException();
d.height = height; d.width = width;
}
public synchronized Dimension getValues(){
// Ooops! Breaks encapsulation return d;
}
}

????Example??????????洢??height??width?????????????????setValues()????????????????????????????????getValues()????d?????????????d?????????????д???μ?????????

Example ex = new Example(); Dimension d = ex.getValues(); d.height = -5; d.width = -10;

?????????Example??????и????!???getValues() ????????????????÷????Dimension?????width ??height??????????????????????????????

?????????????????????????????????????????Dimension???????????????????????????????????????飬????????????????С?

???????????????getValues()?????????

public synchronized Dimension getValues(){ return new Dimension (d.x?? d.y); }

?????????Example????????????????????????????????????????????????????????????Example???????????????????setValues()??????