Web項(xiàng)目中需要注意的地方
現(xiàn)在開(kāi)發(fā)J2EE越來(lái)越有一種感覺(jué),就是開(kāi)發(fā)效率很低,進(jìn)展緩慢,依賴(lài)度很高(指開(kāi)發(fā)人員之間,可能也和交流不夠有關(guān))。而在我的印象中,j2ee開(kāi)發(fā)本來(lái)就不是應(yīng)該屬于這樣一種開(kāi)發(fā)的。我在開(kāi)發(fā)中,感覺(jué)以下的一些方面是造成這種現(xiàn)象的原因,分別是,技術(shù)上:界面,框架,測(cè)試等;非技術(shù)上:需求,部署,規(guī)范,變更等。下面說(shuō)說(shuō)我的想法。
第一,技術(shù)上
1,界面
? 需要怎么樣的界面?這實(shí)際和需求有很大的關(guān)系。暫且拋棄它與需求的關(guān)系,只講其本身的開(kāi)發(fā)。在MVC開(kāi)發(fā)過(guò)程中,通常使用標(biāo)簽庫(kù)與html構(gòu)造界面,這種開(kāi)發(fā)是沒(méi)有什么大問(wèn)題的,可是現(xiàn)在,ajax來(lái)了,該死的js也就來(lái)了。而且每個(gè)人(團(tuán)隊(duì),包括我)都對(duì)一些開(kāi)源的ajax框架不了解也沒(méi)有時(shí)間了解,這樣一來(lái),就只能自己寫(xiě)一些簡(jiǎn)單封裝代碼,應(yīng)用代碼來(lái)滿(mǎn)足界面的要求。當(dāng)工作開(kāi)展了一段時(shí)間以后,大量的js也就沒(méi)有辦法很好的維護(hù),先期設(shè)計(jì)不好所帶來(lái)的不能重復(fù)使用也顯而易見(jiàn)了,最重要的事,往往一個(gè)項(xiàng)目的進(jìn)度都是很緊的,在進(jìn)度的面前,花精力來(lái)修改這些js又是不可能的事情,最后的結(jié)果是付出很多勞動(dòng),卻得不到應(yīng)有的回報(bào)。
2,框架
不要亂用框架,不要不用框架。我是這么覺(jué)得的。團(tuán)隊(duì)在開(kāi)發(fā)的任何一個(gè)方面,都應(yīng)該使用該領(lǐng)域的一個(gè)成熟框架。實(shí)際上,雖然現(xiàn)在有N多的開(kāi)源框架,可是一個(gè)項(xiàng)目真正要用到的又有幾個(gè)呢?struts好像誰(shuí)都在用了,hibernate用的人也很多,這些框架可以讓開(kāi)發(fā)變得簡(jiǎn)單而且不易出錯(cuò)。
3,測(cè)試
至今從沒(méi)見(jiàn)過(guò)好的測(cè)試。暫且不去談測(cè)試的粒度這種問(wèn)題了,因?yàn)槲宜?jiàn)的測(cè)試幾乎都是手工測(cè)試,而且就算要求測(cè)試也是不重視的,好像測(cè)試只是為了現(xiàn)在的正確。
第二,非技術(shù)上
1,需求
這個(gè)問(wèn)題好像有點(diǎn)弱智,沒(méi)有需求能夠做什么?誰(shuí)都知道的道理,可是偏偏在開(kāi)發(fā)的時(shí)候就會(huì)出現(xiàn)連需求都沒(méi)有(或者沒(méi)確定)卻已經(jīng)開(kāi)始開(kāi)發(fā)的情況。這時(shí)的需求就是想當(dāng)然,你想這樣,他想那樣,到頭來(lái)都錯(cuò)了,都要改。時(shí)間浪費(fèi)了很多,卻做了一批無(wú)用的東西。這是最最失敗的。
2,部署
問(wèn):“項(xiàng)目開(kāi)始了,要寫(xiě)構(gòu)建腳本么?”答:“不用。”呵呵,并不是教條到一定要在項(xiàng)目開(kāi)始時(shí)就啟動(dòng)構(gòu)建腳本。我只是想說(shuō)它的重要性,它應(yīng)該在項(xiàng)目開(kāi)始時(shí),或者一小段時(shí)間過(guò)后就有。它不僅可以讓你隨時(shí)部署你的應(yīng)用,而且甚至我覺(jué)得還有一點(diǎn)規(guī)范結(jié)構(gòu)的作用。經(jīng)歷過(guò)沒(méi)有腳本,最后4-5個(gè)人發(fā)布時(shí)忙的只知道拷貝了(實(shí)際上再最后最亂的時(shí)候?qū)戇€是可以避免一下最后部署的混亂的,可是那么關(guān)鍵的時(shí)候,幾乎沒(méi)人想到寫(xiě)那東西,自己的bug都來(lái)不及呢,還管它?)
3,規(guī)范
沒(méi)規(guī)范不好做事情,每個(gè)人都可以定規(guī)范更不好做事情。每個(gè)人都有自己的主張,或這或那,寫(xiě)一些規(guī)范(也算內(nèi)部協(xié)議吧)的時(shí)候自以為就再設(shè)計(jì)了,其實(shí)我很反感,沒(méi)有一個(gè)老大(也許有一個(gè),但不是真正的,因?yàn)樗豢刂疲?,這項(xiàng)目就難做了,別說(shuō)大的規(guī)范了,就連一個(gè)函數(shù)成功執(zhí)行的返回值都可以讓你郁悶半個(gè)小時(shí)。當(dāng)然了,做單元測(cè)試也就想也別想了。
4,變更
總是會(huì)有變更,不可以避免,當(dāng)然也就不會(huì)對(duì)它說(shuō)三道四。只是我希望把變更要當(dāng)作是現(xiàn)在的工作,而不是從前的工作。如果一個(gè)程序員做好了一個(gè)用例,而現(xiàn)在這個(gè)用例的需求變了,那么就不應(yīng)該認(rèn)為該程序員沒(méi)有完成他的工作。只是希望有一個(gè)公平一點(diǎn)的評(píng)價(jià)。
哎~~,火氣大的
第一,技術(shù)上
1,界面
? 需要怎么樣的界面?這實(shí)際和需求有很大的關(guān)系。暫且拋棄它與需求的關(guān)系,只講其本身的開(kāi)發(fā)。在MVC開(kāi)發(fā)過(guò)程中,通常使用標(biāo)簽庫(kù)與html構(gòu)造界面,這種開(kāi)發(fā)是沒(méi)有什么大問(wèn)題的,可是現(xiàn)在,ajax來(lái)了,該死的js也就來(lái)了。而且每個(gè)人(團(tuán)隊(duì),包括我)都對(duì)一些開(kāi)源的ajax框架不了解也沒(méi)有時(shí)間了解,這樣一來(lái),就只能自己寫(xiě)一些簡(jiǎn)單封裝代碼,應(yīng)用代碼來(lái)滿(mǎn)足界面的要求。當(dāng)工作開(kāi)展了一段時(shí)間以后,大量的js也就沒(méi)有辦法很好的維護(hù),先期設(shè)計(jì)不好所帶來(lái)的不能重復(fù)使用也顯而易見(jiàn)了,最重要的事,往往一個(gè)項(xiàng)目的進(jìn)度都是很緊的,在進(jìn)度的面前,花精力來(lái)修改這些js又是不可能的事情,最后的結(jié)果是付出很多勞動(dòng),卻得不到應(yīng)有的回報(bào)。
2,框架
不要亂用框架,不要不用框架。我是這么覺(jué)得的。團(tuán)隊(duì)在開(kāi)發(fā)的任何一個(gè)方面,都應(yīng)該使用該領(lǐng)域的一個(gè)成熟框架。實(shí)際上,雖然現(xiàn)在有N多的開(kāi)源框架,可是一個(gè)項(xiàng)目真正要用到的又有幾個(gè)呢?struts好像誰(shuí)都在用了,hibernate用的人也很多,這些框架可以讓開(kāi)發(fā)變得簡(jiǎn)單而且不易出錯(cuò)。
3,測(cè)試
至今從沒(méi)見(jiàn)過(guò)好的測(cè)試。暫且不去談測(cè)試的粒度這種問(wèn)題了,因?yàn)槲宜?jiàn)的測(cè)試幾乎都是手工測(cè)試,而且就算要求測(cè)試也是不重視的,好像測(cè)試只是為了現(xiàn)在的正確。
第二,非技術(shù)上
1,需求
這個(gè)問(wèn)題好像有點(diǎn)弱智,沒(méi)有需求能夠做什么?誰(shuí)都知道的道理,可是偏偏在開(kāi)發(fā)的時(shí)候就會(huì)出現(xiàn)連需求都沒(méi)有(或者沒(méi)確定)卻已經(jīng)開(kāi)始開(kāi)發(fā)的情況。這時(shí)的需求就是想當(dāng)然,你想這樣,他想那樣,到頭來(lái)都錯(cuò)了,都要改。時(shí)間浪費(fèi)了很多,卻做了一批無(wú)用的東西。這是最最失敗的。
2,部署
問(wèn):“項(xiàng)目開(kāi)始了,要寫(xiě)構(gòu)建腳本么?”答:“不用。”呵呵,并不是教條到一定要在項(xiàng)目開(kāi)始時(shí)就啟動(dòng)構(gòu)建腳本。我只是想說(shuō)它的重要性,它應(yīng)該在項(xiàng)目開(kāi)始時(shí),或者一小段時(shí)間過(guò)后就有。它不僅可以讓你隨時(shí)部署你的應(yīng)用,而且甚至我覺(jué)得還有一點(diǎn)規(guī)范結(jié)構(gòu)的作用。經(jīng)歷過(guò)沒(méi)有腳本,最后4-5個(gè)人發(fā)布時(shí)忙的只知道拷貝了(實(shí)際上再最后最亂的時(shí)候?qū)戇€是可以避免一下最后部署的混亂的,可是那么關(guān)鍵的時(shí)候,幾乎沒(méi)人想到寫(xiě)那東西,自己的bug都來(lái)不及呢,還管它?)
3,規(guī)范
沒(méi)規(guī)范不好做事情,每個(gè)人都可以定規(guī)范更不好做事情。每個(gè)人都有自己的主張,或這或那,寫(xiě)一些規(guī)范(也算內(nèi)部協(xié)議吧)的時(shí)候自以為就再設(shè)計(jì)了,其實(shí)我很反感,沒(méi)有一個(gè)老大(也許有一個(gè),但不是真正的,因?yàn)樗豢刂疲?,這項(xiàng)目就難做了,別說(shuō)大的規(guī)范了,就連一個(gè)函數(shù)成功執(zhí)行的返回值都可以讓你郁悶半個(gè)小時(shí)。當(dāng)然了,做單元測(cè)試也就想也別想了。
4,變更
總是會(huì)有變更,不可以避免,當(dāng)然也就不會(huì)對(duì)它說(shuō)三道四。只是我希望把變更要當(dāng)作是現(xiàn)在的工作,而不是從前的工作。如果一個(gè)程序員做好了一個(gè)用例,而現(xiàn)在這個(gè)用例的需求變了,那么就不應(yīng)該認(rèn)為該程序員沒(méi)有完成他的工作。只是希望有一個(gè)公平一點(diǎn)的評(píng)價(jià)。
哎~~,火氣大的
posted on 2006-03-22 09:50 howard 閱讀(312) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 我的工作