• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            冰果

            技術(shù)群:26678700     
            交流QQ: 704839634
            合作: 1) 可兼職遠(yuǎn)程辦公開(kāi)發(fā); 2) 有一套Go+Python開(kāi)發(fā)的行業(yè)短信云平臺(tái)可合作;3)目前正在開(kāi)發(fā)物聯(lián)網(wǎng)、大數(shù)據(jù)平臺(tái)。

            編程思考(三)

                                          兩條路
                   新開(kāi)發(fā)一個(gè)系統(tǒng),和維護(hù)一個(gè)比較大的老系統(tǒng),那個(gè)比較舒服?
                   不工作就拿錢是最舒服的,我不講這個(gè)不現(xiàn)實(shí)的;在一個(gè)老系統(tǒng)上做二次開(kāi)發(fā),常常更痛苦,所以常見(jiàn)一些人推翻重來(lái)。
                   推翻重來(lái)的理由是,所花時(shí)間更少;但這些人從來(lái)都不考慮風(fēng)險(xiǎn),如果你理解錯(cuò)老的業(yè)務(wù)流程,帶來(lái)的可能是新的大問(wèn)題。
                   推翻重來(lái),體現(xiàn)出一個(gè)程序員的重構(gòu)水平,他沒(méi)法控制別人的代碼了,也可能體現(xiàn)這個(gè)人跟人交流問(wèn)題。
                   我常常反對(duì)推翻重來(lái),除非萬(wàn)不得已,因?yàn)榉彩露加欣狻?br />       所以,當(dāng)往一個(gè)比較大的老系統(tǒng),添加一些新功能時(shí),出現(xiàn)兩條路,出現(xiàn)兩類程序員。

                   那么,如果堵住推翻重來(lái)這條路,逼迫我們面對(duì)老系統(tǒng),情況又怎么樣?
                   5年以上的系統(tǒng),多多少少總形成基本工具庫(kù)和業(yè)務(wù)工具庫(kù),如果公司不逼迫新來(lái)同事去學(xué)習(xí)去使用的話,又形成兩條路。
                   一類人是只管寫自己的新代碼,要一個(gè)工具類或函數(shù),書上或系統(tǒng)api(如c標(biāo)準(zhǔn)庫(kù)\stl\boost\ java jdk等等)不能滿足他的話,他就要重新造輪子了,他絕對(duì)不看已有代碼里是否已經(jīng)實(shí)現(xiàn)或類似實(shí)現(xiàn)。他對(duì)comm\util\commutil等等從名字都可以看出的目錄或包,視而不見(jiàn)。
                   另一類人,他們很勤奮,常常看看周圍是否有可利用的資源,能利用則利用,他們?nèi)プx周圍的代碼,了解已有業(yè)務(wù)流程,一年半載后,對(duì)系統(tǒng)越來(lái)越熟悉。
                   一年半載后,誰(shuí)速度快,誰(shuí)更輕松,誰(shuí)理解業(yè)務(wù)更深刻,誰(shuí)重構(gòu)更快更好?
                   結(jié)果不言自明。
                   有因必有果,有果必有因。

            posted on 2010-10-29 13:03 冰果 閱讀(1960) 評(píng)論(8)  編輯 收藏 引用 所屬分類: 其它

            評(píng)論

            # re: 編程思考(三) 2010-10-29 14:33 溪流

            如果涉及到的新功能已經(jīng)觸及到老系統(tǒng)的根基了,何不趁機(jī)重來(lái)呢?如果每次都能適時(shí)地實(shí)行重構(gòu),不過(guò)多老的系統(tǒng),看上去都可以很清爽。

            不過(guò)lz后半段里的第一類人倒是很常見(jiàn),呵呵,沒(méi)辦法。不過(guò)這算什么輪子?請(qǐng)別玷污輪子一詞~~~這只是無(wú)聊的重復(fù)而已。不過(guò)另一類人也不見(jiàn)得多么明智。如果是對(duì)于充滿“輪子”的5年以上的老系統(tǒng),熟悉了又如何?浪費(fèi)生命而已。這種情況下還不如第一類人。  回復(fù)  更多評(píng)論   

            # re: 編程思考(三) 2010-10-29 14:36 溪流

            LZ的(一)(二)都很泛泛而談,說(shuō)實(shí)在的沒(méi)啥意思。這篇終于涉及到對(duì)于實(shí)際情況的討論了。  回復(fù)  更多評(píng)論   

            # re: 編程思考(三) 2010-10-29 15:56 天下

            要看程序員們等其他人的意見(jiàn).

            維護(hù)及重構(gòu)都不是一個(gè)人的事.
              回復(fù)  更多評(píng)論   

            # re: 編程思考(三) 2010-10-29 19:52 nomagic

            有時(shí)候情況可能更糟糕,我碰到過(guò)的情況是:要維護(hù)的老系統(tǒng)異常龐大,它是公司盈利的核心產(chǎn)品,但是設(shè)計(jì)水平和代碼水平都很糟糕,充滿bug,非常脆弱。為了保證系統(tǒng)大多數(shù)時(shí)候可用,到處使用sleep(1)這樣的代碼來(lái)保證線程之間上下文邏輯的正確性,甚至加入了定時(shí)重啟服務(wù)程序的邏輯。另外,經(jīng)常招一些實(shí)習(xí)生來(lái)繼續(xù)堆砌代碼。開(kāi)發(fā)新的功能總是匆匆忙忙,做過(guò)最簡(jiǎn)單的測(cè)試就認(rèn)為功能可用了,除非用戶提出,否則根本不考慮性能、安全性、易用性等等問(wèn)題。文檔與代碼中的實(shí)際邏輯相差較大。因?yàn)橄到y(tǒng)龐大,且勉強(qiáng)可用,所以公司領(lǐng)導(dǎo)不考慮重寫。。。。這種系統(tǒng)讓人絕望,只能跳槽!  回復(fù)  更多評(píng)論   

            # re: 編程思考(三) 2010-10-29 19:56 nomagic

            繼續(xù)補(bǔ)充:開(kāi)發(fā)人員經(jīng)常出差帶現(xiàn)場(chǎng)改代碼。水平好一點(diǎn)的實(shí)習(xí)生私底下也說(shuō)這程序水平太爛。但是老板說(shuō),這個(gè)程序是公司創(chuàng)業(yè)初期幾個(gè)元老沒(méi)日沒(méi)夜趕出來(lái)的,正因?yàn)橛辛怂静拍芑畹浆F(xiàn)在。。。  回復(fù)  更多評(píng)論   

            # re: 編程思考(三) 2010-10-30 18:56 kula

            推倒重來(lái)是好是壞,從來(lái)都不是一個(gè)簡(jiǎn)單的問(wèn)題.

            老系統(tǒng)歸根接底, 存在了太多的技術(shù)欠債.我曾經(jīng)維護(hù)過(guò)的一個(gè)系統(tǒng),30萬(wàn)行c源代碼.代碼之間交叉引用的關(guān)系錯(cuò)綜復(fù)雜.有將近6年的歷史.隨著公司老員工的離去.沒(méi)有人能夠理解代碼表達(dá)什么含義.每每遇到一個(gè)bug.大家都要集體開(kāi)會(huì).討論這個(gè)代碼應(yīng)該如何改.怎樣對(duì)一個(gè)代碼做出修改而不至于引發(fā)更多的bug.整個(gè)開(kāi)發(fā)過(guò)程類似于抽積木的游戲.大家都在費(fèi)盡心力的抽積木. 想增加新功能變成了一件遙不可及的事情.業(yè)務(wù)部門天天抱怨.認(rèn)為技術(shù)部門只是故意找借口推脫. 士氣陷入低落. 產(chǎn)品在市場(chǎng)上也缺乏競(jìng)爭(zhēng)力. 我最后也離開(kāi)了這家公司.

            當(dāng)時(shí)我的選擇也有兩種,第一,是苦心讀源碼,花個(gè)一年半載的時(shí)間理解業(yè)務(wù)問(wèn)題.第二種是推到重來(lái).

            但我的考慮是..人生多么寶貴..干嘛要花時(shí)間在一件不能給我?guī)?lái)太多收益的事情上? 有這一年半載的時(shí)間做什么不成.于是我向領(lǐng)導(dǎo)提出了建議.推倒重來(lái),按照我的理解重構(gòu)系統(tǒng). 結(jié)果也毫不猶豫的被否決了. 于是我做出了第三種選擇. 離職走人. 找到了一家更適合我的.能學(xué)到更多東西的公司.

            人生苦短.何必和自己過(guò)不去. 讓自己陷入老項(xiàng)目的泥潭中去呢.

              回復(fù)  更多評(píng)論   

            # re: 編程思考(三) 2010-10-30 20:45 溪流

            @kula
            老系統(tǒng)的出現(xiàn),就是因?yàn)橹霸撏频骨掖鷥r(jià)不大的時(shí)候沒(méi)推倒  回復(fù)  更多評(píng)論   

            # re: 編程思考(三)[未登錄](méi) 2010-11-26 16:20 123

            該重構(gòu)就要重構(gòu),這個(gè)不好一概而論對(duì)錯(cuò)。那么多重構(gòu)書,不是教人無(wú)聊找事的。
            關(guān)鍵是,你們上面提到那些案例,老板都摻和進(jìn)來(lái)了,只能用【震驚】來(lái)形容,當(dāng)然,老板本身懂的除外。
            不了解現(xiàn)有代碼的基礎(chǔ)上,不是重構(gòu)而是重做,心態(tài)問(wèn)題  回復(fù)  更多評(píng)論   

                                                        
            97精品伊人久久大香线蕉app | 无码人妻久久一区二区三区蜜桃| 国产精品久久久久影视不卡| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲av伊人久久综合密臀性色| 久久天天躁狠狠躁夜夜96流白浆| 97久久精品人妻人人搡人人玩| 亚洲精品高清国产一久久| 久久久午夜精品| 久久这里只精品国产99热| 亚洲婷婷国产精品电影人久久| 久久久久国产精品熟女影院| 国产伊人久久| 99久久精品日本一区二区免费| 久久免费国产精品| 久久水蜜桃亚洲av无码精品麻豆| 色噜噜狠狠先锋影音久久| 亚洲午夜久久久影院伊人| 精品久久人人爽天天玩人人妻| 国产精品9999久久久久| 香蕉久久久久久狠狠色| 国产高潮国产高潮久久久91 | 亚洲国产精品成人久久蜜臀| 99国产精品久久| 久久男人Av资源网站无码软件| 狠狠色丁香久久婷婷综合_中| 51久久夜色精品国产| 国内精品久久久久影院优| 狠狠色噜噜色狠狠狠综合久久| 亚洲精品高清一二区久久| 精品久久久久久国产牛牛app| 久久er国产精品免费观看2| 久久99精品久久久久婷婷| 99久久国产综合精品女同图片| 久久久久久午夜精品| 国产99久久久国产精品小说| 久久亚洲色一区二区三区| 久久人人爽人人爽AV片| 久久中文精品无码中文字幕| 久久国产影院| 久久久久青草线蕉综合超碰|