隨手.toString()帶來的一個毀滅性災難

生產有一個項目需要進行一點點改動,因爲改動不大,所以他便沒在測試環境進行測試,因爲測試環境測試比較麻煩,而且生產這個改動就是針對model增加一個字段,然後某個分支進行賦值,操作起來比較簡單,所以就進行改造了。
不出意外的,項目gg了,他怎麼也想不到,出錯的地方,就是因爲他的1個隨後.toString(),我們舉個列子:

public class EcfnPay {
	String name;
	String age;
	String cc;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getCc() {
		return cc;
	}

	public void setCc(String cc) {
		this.cc = cc;
	}

	@Override
	public String toString() {
		return "EcfnPay [name=" + name + ", age=" + age + ", cc=" + cc + "]";
	}

}
public static void main(String[] args) {
	EcfnPay ec = new EcfnPay();
	ec.setAge("11");
	ec.setName("小黃");
	System.out.println(ec.toString());
	System.out.println(ec.getCc());
	System.out.println("完畢---");
}

測試代碼相當簡單,而且這代碼邏輯沒毛病,但是關鍵就是他取對象的某個字段值賦值的時候,隨手.toString(),比如這樣:

null.toString()肯定是不行的,由於該同事在賦值的地方做了異常處理,所以沒能捕獲到具體異常,還打了日誌在生產進行查詢,折騰了一個下午。其實這種錯誤是非常非常低級的,什麼時候建議用toString()呢?

一般而言,只有打印對象的時候,我們可以採用toString()進行輸出,其他任何時候,不建議使用toString(),因爲toString()僅僅對於調試或任何其他需要將對象呈現爲字符串的情況有用,大多時候,進行賦值處理時,一般建議採用三目運算法則,判斷是null還是空字符串,而不建議隨手.toString()。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章