That way I want to stay

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            55 Posts :: 1 Stories :: 41 Comments :: 0 Trackbacks

          公告

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章檔案

          生活

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

            其實(shí)這種事情都會(huì)有兩個(gè)觀點(diǎn)。
          一個(gè)觀點(diǎn)是:建議使用自己熟悉的技術(shù),采用簡(jiǎn)單的架構(gòu)去實(shí)現(xiàn)項(xiàng)目,等到你把項(xiàng)目做出來(lái)了,能用起來(lái)了,客戶認(rèn)可了。以后的升級(jí),那是你就可以比較輕松的采用其 它的架構(gòu)來(lái)重構(gòu),這樣你的風(fēng)險(xiǎn),壓力就相對(duì)減少很多了。
          而這回,我想頂一下第二個(gè)觀點(diǎn):  
            其實(shí)如果你對(duì)代碼要求比較嚴(yán)格的話,你就會(huì)經(jīng)常發(fā)現(xiàn),你的代碼有很多東西可以抽取出來(lái),或者做在公共的模塊,或者作為框架的底層,我們就簡(jiǎn)單的拿jdbc來(lái)說(shuō)吧,
              首先,是connection的管理,這點(diǎn)一般用jdbc熟一些的話,都會(huì)有管理connection的公共模塊,雖然偶爾會(huì)碰到性能的問(wèn)題,但是這點(diǎn)我們暫且壓下不表。
              我們查詢的時(shí)候,每次都要用
              rs.get...("name"),
              rs.get...("id"),
              rs.get...("age"),
              rs.get...("gender"),
              rs.get...("hobby"),
              然后修改數(shù)據(jù)庫(kù)的時(shí)候,還要拼寫(xiě)update語(yǔ)句跟insert語(yǔ)句,經(jīng)常還要費(fèi)很多時(shí)間來(lái)調(diào)試這些多余代碼的問(wèn)題,這時(shí)候你就想,不行,我一定要寫(xiě)一個(gè)公共模塊,省得讓我每次都要定這么多代碼,于是你的第一個(gè)公共模塊產(chǎn)生了,然后測(cè)試啊測(cè)試,改進(jìn)啊改進(jìn),叮叮響,過(guò)了幾天時(shí)間的考驗(yàn),這個(gè)公共模塊終于可以放心使用了,項(xiàng)目進(jìn)度開(kāi)始快一些了,總算不用再拼SQL了。
             
              后來(lái)在做統(tǒng)計(jì)模塊的時(shí)候,突然又發(fā)現(xiàn),之前在用到的一些SQL函數(shù),好像在客戶要求的數(shù)據(jù)庫(kù)上不怎么行啊,于是又去查了一下資料,又過(guò)了幾天(可能這次不用幾天),然后終于放心,所有的函數(shù)都正常了。
             
              接著又不可避免的碰到了分頁(yè)的問(wèn)題,你對(duì)自己說(shuō),不用怕,我上回就寫(xiě)了一個(gè)分頁(yè)的,沒(méi)有問(wèn)題!可是Ya的你突然發(fā)現(xiàn),上回的那個(gè)分頁(yè)是用游標(biāo)實(shí)現(xiàn)的,這回客戶是要求用SQLServer,唉,SQLServer的游標(biāo),不提也罷,想來(lái)想去,只好自己拼SQL語(yǔ)句來(lái)寫(xiě)分頁(yè)了,又是count又是top,測(cè)了又測(cè)之后,又過(guò)了幾天,啊哈,終于分頁(yè)的公共模塊也做好的,可以放心使用了,好,項(xiàng)目的進(jìn)度又可以加快了。

              做著做著的時(shí)候,發(fā)現(xiàn),咦,好像這表得增加一個(gè)字段才行,增加了,然后所有查詢的SQL語(yǔ)句加一下,所有insert跟update的代碼修改一下,頁(yè)面修改一下,嗯,現(xiàn)在應(yīng)該正常了,看起來(lái)倒是沒(méi)什么問(wèn)題,咦,報(bào)表好像不怎么對(duì)啊,靠,這邊還有調(diào)用這個(gè)表的代碼,媽的,改吧改吧。磨蹭了好幾個(gè)小時(shí)(當(dāng)然,熟練的話,并不用幾個(gè)小時(shí)),總算看起來(lái)都正常了。

              這一回,這個(gè)功能中有一次用戶請(qǐng)求,訪問(wèn)了好幾次數(shù)據(jù)庫(kù),不行,這里應(yīng)該用個(gè)cache,否則性能上會(huì)有問(wèn)題啊,算了,用算法解決一下,盡量少訪問(wèn)數(shù)據(jù)庫(kù)好了,我對(duì)cache還不熟呢。(寫(xiě)啊寫(xiě)啊,Batch Size,這樣多,那樣多,F(xiàn)etch Size。。。,終于,看起來(lái)正常一些了)。過(guò)了一段時(shí)間,靠,這邊又要訪問(wèn)好幾次數(shù)據(jù)庫(kù),Ya的受不鳥(niǎo)了,性能愛(ài)咋的咋的,反正一個(gè)地方慢又不要緊。Oh shit!!!這邊也是好幾次,這邊又是好幾次,那邊又是好幾次。不行了,我老老實(shí)實(shí)寫(xiě)個(gè)cache支持吧,于是又叮叮當(dāng)當(dāng)了好幾天,終于,有個(gè)粗糙的cache出來(lái)了,終于速度可以看一些了。后來(lái)改進(jìn)又改進(jìn),測(cè)試又測(cè)試,累死了,老子好不爽啊。

              好像天下有點(diǎn)太平了,啊,你說(shuō)我這個(gè)地方忘記更新你增加的那個(gè)子表啊,算了,沒(méi)關(guān)系,我明天看一下代碼,這個(gè)容易解決點(diǎn)。嗯,我改了那邊的代碼了,會(huì)更新子表信息了。什么?你說(shuō)取主表的記錄跟相應(yīng)的子表記錄列表麻煩啊,沒(méi)關(guān)系,我更新一下處理resultset的公共模塊,明天再說(shuō)。
              Oh shit......對(duì)這樣子復(fù)雜的查詢好像現(xiàn)在的公共模塊支持不了啊,算了,這樣子的查詢不要用這個(gè)公共模塊,我們手動(dòng)寫(xiě)一些代碼好啊,別跟我講這樣代碼結(jié)構(gòu)很難看,你以為我不知道啊,TMD。

              TMD的,怎么這邊的SQL老是運(yùn)行不了啊,不會(huì)是分頁(yè)底層模塊的問(wèn)題吧,靠,怎么你的SQL語(yǔ)句有這么多order,group by,靠,還有top啊,這當(dāng)然過(guò)不了了,不要吵了,現(xiàn)在時(shí)間改,不理它,直接用個(gè)假分頁(yè)就行了。你又說(shuō)代碼結(jié)構(gòu)難看,小心我抽你哦。

              公司新來(lái)一個(gè)程序員,看了幾天代碼,不停的抱怨說(shuō),這代碼寫(xiě)得真差啊。。。。。。 


          文章來(lái)源:http://blog.csdn.net/Wingel/archive/2006/11/26/1414852.aspx
          posted on 2006-11-29 11:20 Wingel 閱讀(295) 評(píng)論(2)  編輯  收藏

          Feedback

          # re: [導(dǎo)入]項(xiàng)目中,是用一些開(kāi)源框架,還是用自己較熟悉的技術(shù)? 2006-12-07 15:22 Tony[匿名]
          唉,這就是國(guó)內(nèi)程序員的悲哀,任人擺布。需求做不好,客戶總提新功能,程序永遠(yuǎn)處在修改狀態(tài),代碼能寫(xiě)得好嗎?  回復(fù)  更多評(píng)論
            

          # re: [導(dǎo)入]項(xiàng)目中,是用一些開(kāi)源框架,還是用自己較熟悉的技術(shù)? 2006-12-16 13:33 hgq0011
          這似乎是一個(gè)程序員的成長(zhǎng)過(guò)程。在實(shí)際中慢慢的體會(huì)到應(yīng)改怎樣寫(xiě)代碼,怎樣會(huì)有更好的性能,怎樣會(huì)讓別人容易理解你寫(xiě)的代碼,怎樣更容易維護(hù)。一些過(guò)程環(huán)節(jié)是不能省的。如果不能很好的駕馭一個(gè)框架,就把它用到實(shí)踐中,那,,,  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 和龙市| 舞阳县| 图片| 嘉定区| 石河子市| 盖州市| 临湘市| 临猗县| 湖口县| 青神县| 新竹市| 阿鲁科尔沁旗| 延长县| 怀柔区| 南投县| 家居| 寿宁县| 阿鲁科尔沁旗| 茶陵县| 德阳市| 诸城市| 望城县| 新民市| 新宾| 遂平县| 海伦市| 建湖县| 麟游县| 湘潭县| 五台县| 大埔县| 娄底市| 和田县| 东平县| 二手房| 清徐县| 如皋市| 灵山县| 韶关市| 福泉市| 来宾市|