這是一個比較嚴(yán)重的問題,這也是我為什么老說能不能學(xué)好編程也是要看“悟性”,我就見過邏輯思維極度混亂的人。對于改進(jìn)的方法,我只能提幾點小建議。

敲代碼之前要多思考,多畫流程,多考慮分支,多考慮可能發(fā)生的異常。

雖然很多公司沒有為程序員留出單獨(dú)的設(shè)計時間,但是當(dāng)拿到一個需求的時候,不是立刻動手敲代碼,而是要先思考,盡可能把所有的業(yè)務(wù)分支都考慮清楚。

java

舉個例子,任務(wù)表里有一批數(shù)據(jù),需要寫一個批處理方法對其處理。

最簡單的流程:Java代碼中訪問數(shù)據(jù)庫,select * from table , 查詢出來數(shù)據(jù)后,在Java中遍歷處理。那么可能會有的問題有哪些,解決方法又是什么,我們一起來看看:

  1. 如果數(shù)據(jù)太多,一次性把數(shù)據(jù)都讀取到內(nèi)存中就會有問題。解決方法:分頁查詢。

  2. 處理過程中,任務(wù)表還有數(shù)據(jù)插入,會造成漏處理或重復(fù)處理。解決方法:增加處理/未處理標(biāo)志字段。

  3. 其中一條數(shù)據(jù)處理過程發(fā)生異常,程序會中斷。解決方法:增加異常處理,單條數(shù)據(jù)處理異常也不會造成程序中斷;發(fā)生處理異常的數(shù)據(jù),標(biāo)志位寫入處理失敗。

  4. 數(shù)據(jù)量多,單機(jī)處理效率慢。解決方法:分布式Job,部署多臺服務(wù)對數(shù)據(jù)進(jìn)行處理。

這么一看,一個很簡單的需求,其實包含的可能性是非常的多的。我們在正式開發(fā)之前,盡量把所有的可能性都考慮到。

另外,我們在做Java開發(fā)的時候,盡量做到一個方法只做一件事兒,避免把大量代碼都寫在一個方法里面,這樣不僅會讓別人讀不懂你的代碼,而且時間長了,自己都不知道自己的代碼是什么意思了。