• <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>

            冰果

            技術群:26678700     
            交流QQ: 704839634
            合作: 1) 可兼職遠程辦公開發; 2) 有一套Go+Python開發的行業短信云平臺可合作;3)目前正在開發物聯網、大數據平臺。

            編程思考(三)

                                          兩條路
                   新開發一個系統,和維護一個比較大的老系統,那個比較舒服?
                   不工作就拿錢是最舒服的,我不講這個不現實的;在一個老系統上做二次開發,常常更痛苦,所以常見一些人推翻重來。
                   推翻重來的理由是,所花時間更少;但這些人從來都不考慮風險,如果你理解錯老的業務流程,帶來的可能是新的大問題。
                   推翻重來,體現出一個程序員的重構水平,他沒法控制別人的代碼了,也可能體現這個人跟人交流問題。
                   我常常反對推翻重來,除非萬不得已,因為凡事都有例外。
                   所以,當往一個比較大的老系統,添加一些新功能時,出現兩條路,出現兩類程序員。

                   那么,如果堵住推翻重來這條路,逼迫我們面對老系統,情況又怎么樣?
                   5年以上的系統,多多少少總形成基本工具庫和業務工具庫,如果公司不逼迫新來同事去學習去使用的話,又形成兩條路。
                   一類人是只管寫自己的新代碼,要一個工具類或函數,書上或系統api(如c標準庫\stl\boost\ java jdk等等)不能滿足他的話,他就要重新造輪子了,他絕對不看已有代碼里是否已經實現或類似實現。他對comm\util\commutil等等從名字都可以看出的目錄或包,視而不見。
                   另一類人,他們很勤奮,常??纯粗車欠裼锌衫玫馁Y源,能利用則利用,他們去讀周圍的代碼,了解已有業務流程,一年半載后,對系統越來越熟悉。
                   一年半載后,誰速度快,誰更輕松,誰理解業務更深刻,誰重構更快更好?
                   結果不言自明。
                   有因必有果,有果必有因。

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

            評論

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

            如果涉及到的新功能已經觸及到老系統的根基了,何不趁機重來呢?如果每次都能適時地實行重構,不過多老的系統,看上去都可以很清爽。

            不過lz后半段里的第一類人倒是很常見,呵呵,沒辦法。不過這算什么輪子?請別玷污輪子一詞~~~這只是無聊的重復而已。不過另一類人也不見得多么明智。如果是對于充滿“輪子”的5年以上的老系統,熟悉了又如何?浪費生命而已。這種情況下還不如第一類人。  回復  更多評論   

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

            LZ的(一)(二)都很泛泛而談,說實在的沒啥意思。這篇終于涉及到對于實際情況的討論了。  回復  更多評論   

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

            要看程序員們等其他人的意見.

            維護及重構都不是一個人的事.
              回復  更多評論   

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

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

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

            繼續補充:開發人員經常出差帶現場改代碼。水平好一點的實習生私底下也說這程序水平太爛。但是老板說,這個程序是公司創業初期幾個元老沒日沒夜趕出來的,正因為有了它,公司才能活到現在。。。  回復  更多評論   

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

            推倒重來是好是壞,從來都不是一個簡單的問題.

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

            當時我的選擇也有兩種,第一,是苦心讀源碼,花個一年半載的時間理解業務問題.第二種是推到重來.

            但我的考慮是..人生多么寶貴..干嘛要花時間在一件不能給我帶來太多收益的事情上? 有這一年半載的時間做什么不成.于是我向領導提出了建議.推倒重來,按照我的理解重構系統. 結果也毫不猶豫的被否決了. 于是我做出了第三種選擇. 離職走人. 找到了一家更適合我的.能學到更多東西的公司.

            人生苦短.何必和自己過不去. 讓自己陷入老項目的泥潭中去呢.

              回復  更多評論   

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

            @kula
            老系統的出現,就是因為之前該推倒且代價不大的時候沒推倒  回復  更多評論   

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

            該重構就要重構,這個不好一概而論對錯。那么多重構書,不是教人無聊找事的。
            關鍵是,你們上面提到那些案例,老板都摻和進來了,只能用【震驚】來形容,當然,老板本身懂的除外。
            不了解現有代碼的基礎上,不是重構而是重做,心態問題  回復  更多評論   

                                                        
            狠狠色丁香久久综合婷婷| 久久99国产精品久久99小说| 热久久视久久精品18| 热re99久久精品国产99热| 狠狠色丁香婷综合久久| 99久久99这里只有免费费精品| 久久精品中文无码资源站| 久久99热这里只频精品6| 欧美久久久久久| 久久精品一区二区三区AV| 7777久久久国产精品消防器材| 久久精品国产99久久久古代 | 国产成人综合久久精品尤物| 97精品久久天干天天天按摩| 成人资源影音先锋久久资源网| 久久偷看各类wc女厕嘘嘘| 1000部精品久久久久久久久| 欧美久久综合性欧美| 四虎亚洲国产成人久久精品| 亚洲国产精品综合久久网络| 亚洲国产另类久久久精品小说| 精品国产乱码久久久久久郑州公司 | 久久精品国产精品亚洲| 一本色道久久综合狠狠躁篇| 久久久久久亚洲Av无码精品专口 | 亚洲午夜久久久久久久久电影网 | 久久久久国产精品三级网| 久久99久久99精品免视看动漫| 久久久久亚洲AV无码网站| 国産精品久久久久久久| 国产A级毛片久久久精品毛片| 99久久精品日本一区二区免费| 久久99国产一区二区三区| 亚洲中文字幕无码久久2017| 中文精品久久久久国产网址| 久久人人添人人爽添人人片牛牛| 精品国产乱码久久久久久郑州公司 | 中文字幕成人精品久久不卡| 精品熟女少妇AV免费久久| 伊人久久大香线蕉精品| 无码国内精品久久人妻|