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

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

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

java

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

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

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

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

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

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

這么一看,一個(gè)很簡(jiǎn)單的需求,其實(shí)包含的可能性是非常的多的。我們?cè)谡介_(kāi)發(fā)之前,盡量把所有的可能性都考慮到。

另外,我們?cè)谧鯦ava開(kāi)發(fā)的時(shí)候,盡量做到一個(gè)方法只做一件事兒,避免把大量代碼都寫在一個(gè)方法里面,這樣不僅會(huì)讓別人讀不懂你的代碼,而且時(shí)間長(zhǎng)了,自己都不知道自己的代碼是什么意思了。