寫代碼的順序最好和實際操作的邏輯一樣,先做什么后做什么,這樣能最大程度的保證邏輯不會出什么問題。前提是你要熟悉業(yè)務(wù)邏輯。
10余年的樂業(yè)網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整樂業(yè)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“樂業(yè)網(wǎng)站設(shè)計”,“樂業(yè)網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
還有開發(fā)的時候不要局限于一個方法的實現(xiàn)代碼邏輯,先從整體上把方法都寫出來,比如這個方法要做什么,只管寫一個方法就行,具體怎么做可以在框架都搭完了再寫,更好的就是全部用接口,接口全部寫好了之后再寫實現(xiàn)類,這樣更好。
還有一個方法里面的代碼最好不要太長,最好不要超過一個屏幕,不然看起來很累的,可以把一個方法分成好幾個方法來寫,那樣BUG也會減少很多,邏輯性強。還有就是最好不要循環(huán)嵌套,嵌套個兩三層后出問題就麻煩了,如果一定要嵌套就分出去一個方法就好。
還有就是要多集成,能通用的方法就通用寫掉,寫成工具類,如果有框架了,多多熟悉原本就有的工具類,都自己寫的話代碼多不說,還很容易出錯,要學(xué)會活用別人的代碼。
最后:多多交流,自己蒙頭寫只能一事無成。
最最后:手打真累...
一:學(xué)會如何讀一個JavaWeb項目源代碼 步驟:表結(jié)構(gòu)-web.xml-mvc-db-spring
ioc-log- 代碼
1、先了解項目數(shù)據(jù)庫的表結(jié)構(gòu),這個方面是最容易忘記 的,有時候我們只顧著看每一個方法是怎么進行的,卻沒
有去了解數(shù)據(jù)庫之間的主外鍵關(guān)聯(lián)。其實如果先了解數(shù)據(jù) 庫表結(jié)構(gòu),再去看一個方法的實現(xiàn)會更加容易。
2、然后需要過一遍web.xml,知道項目中用到了什么攔
截器,監(jiān)聽器,過濾器,擁有哪些配置文件。如果是攔截 器,一般負(fù)責(zé)過濾請求,進行AOP 等;如果是監(jiān) 可能是定時任務(wù),初始化任務(wù);配置文件有如使用了 spring
后的讀取mvc 相關(guān),db 相關(guān),service 相關(guān),aop 相關(guān)的文件。
3、查看攔截器,監(jiān)聽器代碼,知道攔截了什么請求,這
個類完成了怎樣的工作。有的人就是因為缺少了這一步, 自己寫了一個action,配置文件也沒有寫錯,但是卻怎么
調(diào)試也無法進入這個action,直到別人告訴他,請求被攔
4、接下來,看配置文件,首先一定是mvc相關(guān)的,如 springmvc
中,要請求哪些請求是靜態(tài)資源,使用了哪些 view 策略,controller 注解放在哪個包下等。 然后是db 相關(guān)配置文件,看使用了什么數(shù)據(jù)庫,使用了
什么orm框架,是否開啟了二級緩存,使用哪種產(chǎn)品作 為二級緩存,事務(wù)管理的處理,需要掃描的實體類放在什 么位置。最后是spring 核心的ioc
功能相關(guān)的配置文件, 知道接口與具體類的注入大致是怎樣的。當(dāng)然還有一些如 apectj 置文件,也是在這個步驟中完成
5、log
相關(guān)文件,日志的各個級別是如何處理的,在哪些 地方使用了log 記錄日志
6、從上面幾點后知道了整個開源項目的整體框架,閱讀 每個方法就不再那么難了。
7、當(dāng)然如果有項目配套的開發(fā)文檔也是要閱讀的。
import?java.util.ArrayList;
import?java.util.Random;
public?class?Test?{
static?class?Guest?{
final?int?time;
final?int?id;
Guest(int?id)?{
this.time?=?(new?Random().nextInt(10)?+?1)?*?1000?*?60;//想快一點,就修改小一點
this.id?=?id;
}
}
static?class?Tasks?{
final?ArrayListGuest?list?=?new?ArrayListGuest();
int?i?=?0;
Tasks(int?n)?{
for?(int?i?=?0;?i??n;?i++)?{
list.add(new?Guest(i?+?1));
}
}
public?synchronized?Guest?getTask()?{
if?(i?=?list.size())?{
return?null;
}
return?list.get(i++);
}
}
static?class?BankWorker?extends?Thread?{
final?int?id;
final?Tasks?tasks;
BankWorker(int?id,?Tasks?tasks)?{
this.id?=?id;
this.tasks?=?tasks;
}
private?void?doWork(Guest?g)?throws?InterruptedException?{
System.out.println(id?+?"號柜臺開始辦理"?+?g.id?+?"號顧客的業(yè)務(wù)");
Thread.sleep(g.time);
System.out.println(id?+?"號柜臺已經(jīng)辦理完"?+?g.id?+?"號顧客的業(yè)務(wù)");
}
public?void?run()?{
System.out.println(id?+?"號柜臺開始上班");
while?(true)?{
Guest?g?=?tasks.getTask();
if?(g?==?null)?{
break;
}
try?{
doWork(g);
}?catch?(InterruptedException?e)?{
System.out.println("領(lǐng)導(dǎo)強制要求"?+?id?+?"號柜臺下班");
break;
}
}
System.out.println(id?+?"號柜臺下班羅");
}
}
public?static?void?main(String[]?args)?throws?Exception?{
Tasks?tasks?=?new?Tasks(6);
new?BankWorker(1,?tasks).start();
new?BankWorker(2,?tasks).start();
}
}
上代碼
你好,業(yè)務(wù)流程指整個項目中某個模塊從開始到最后所有的功能點的操作說明,你可以理解為程序設(shè)計前的流程。而工作流程一般是運用在workflow項目中,比如說一個電子審批的程序,從申請-承認(rèn)-再承認(rèn)-完成審批 ,這就是一個工作流程。這兩個東西都是在需求分析時需要跟客戶商討的。明確客戶的用途和需求。希望可以幫到你,謝謝。