• <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>
            Creative Commons License
            本Blog采用 知識共享署名-非商業(yè)性使用-禁止演繹 3.0 Unported許可協(xié)議 進行許可。 —— Fox <游戲人生>

            游戲人生

            游戲人生 != ( 人生 == 游戲 )
            站點遷移至:http://www.yulefox.com。請訂閱本博的朋友將RSS修改為http://feeds.feedburner.com/yulefox
            posts - 62, comments - 508, trackbacks - 0, articles - 7

            調(diào)整思路——2008年繼續(xù)努力

            Posted on 2008-01-02 02:43 Fox 閱讀(781) 評論(6)  編輯 收藏 引用 所屬分類: G游戲編程

            Author: Fox

            元旦放假3天,本來想把前面寫的一個存在線程安全隱患的模塊推倒重來的,可是改著改著就覺得不對勁了。

            既然是返工,就想盡量把現(xiàn)在的理解完全加進去,讓后面的人看了不要罵。可是想把幾千行的代碼改得面目全非并且更加安全準確也并不是一件容易的事,雖然對于功能和邏輯的認識比以前要清晰的多。

            拿到一個新的模塊,上面一般會給個大致的deadline。除非你對這個模塊和整個項目的依賴關(guān)系(接口、邏輯、功能)有很好的把握,否則,你根本不知道到底有多少東西是已經(jīng)實現(xiàn)的,有多少東西是可以復(fù)用的,有多少東西是需要修改的,有多少東西是要重寫的,有多少東西是要新加的,僅僅根據(jù)需求預(yù)估的進度是不可能恰到好處的。而脫離了整個項目實現(xiàn)的模塊是非常可能出問題的,尤其是在使用多線程的項目中。

            當(dāng)我的這個模塊完成并上馬之后,我沾沾自喜的跟上面說,應(yīng)該是不會有問題了,上面跟我說了一句:如果不出問題就是奇跡了,我當(dāng)時頗不以為然。在后面一兩周之內(nèi)真的就是沒有什么問題,我真想告訴他是我創(chuàng)造了奇跡。

            “奇跡”在2007年的最后一周破滅了。在我從西嶺雪山回來的那天,為了增加新功能把代碼修改了一些,結(jié)果第二天更新之后,服務(wù)器就老是有問題,找了一下午,才發(fā)現(xiàn)在修改代碼的時候居然忘記對一個pointer做NULL判定!我心想,這種錯誤居然都出來了!死了算了!而且這個問題出在非主線程中。然后就和同事在考慮,這個東西如果線程同步出現(xiàn)問題,你就是每次使用前都做NULL判定也沒用,所以就決定把這個模塊重寫了。

            在這兒我就不想就線程安全問題多說了,以后想好了再專門去寫點多線程的東西吧,今天只是想說點瑣碎的東西。

            因為是放假,心思未必就全部放在上面了,代碼沒改多少,倒是玩了很長時間的游戲。后來想想,也不全是時間問題,幾千行的代碼改來改去,難保不出現(xiàn)更多的問題。必須把它當(dāng)作一個新的模塊去寫,先要把邏輯結(jié)構(gòu)完全理出來,能多細化就多細化,最好能夠精確到變量的使用,而且把文檔做細,這樣就可以在寫文檔的過程中把問題盡可能想全想清楚。改代碼先改文檔,這幾乎是所有學(xué)過軟件工程并寫過項目的同學(xué)都能認識并理解的常識,可是在實際工作中,上有任務(wù)催趕,下有閑心雜念,很難把文檔和注釋寫好。而做不到這一點的話,你就不敢保證你的模塊不出差錯。

            所以,對于一個一般的需求,如果deadline是2個月的話。讀需求、評估依賴關(guān)系、量進度要花掉1周,畫邏輯結(jié)構(gòu)、寫文檔要花掉3周,相當(dāng)于前面一半的時間沒有動手寫代碼,然后寫代碼大概只用1周,甚至更少,其他時間就留給測試和修改文檔、代碼了。從軟件工程的角度,這樣的分配是合理的,而且是應(yīng)該的,但到了實際項目里面,又做不到!看來,不管是manager,還是coder,都不能急,軟件工程不能白學(xué)了。

            我發(fā)現(xiàn),我的軟件工程就是白學(xué)了,以后得改改。

            /*****************************************************************************
            ?不想回頭去動以前的代碼,每次看以前寫過的東西,都有一種想把它徹底刪除的沖動。
            ?把需求看好、文檔寫好、時間安排好,這才是硬道理……

            ?畢竟是新年,還是祝大家:新年快樂!
            ?重要的是,新的一年,別荒廢了……
            *****************************************************************************/

            Feedback

            # re: 調(diào)整思路——2008年繼續(xù)努力  回復(fù)  更多評論   

            2008-01-02 11:45 by eXile
            這個問題, 稱之為重構(gòu).
            在沒有單元測試的保證下, 進行重構(gòu)是一種危險的行為. 正如你說的一樣, 要指望不出問題, 那是奇跡. 這也不能怪軟件工程沒學(xué)好, 因為我們學(xué)的軟件工程本身就是有缺陷的.

            "把需求看好、文檔寫好、時間安排好,這才是硬道理…… "
            這是不對的, 設(shè)計的唯一不變的特點就是: 它總是在變化.
            --是不是有點有饒口 :) , 這是<<設(shè)計模式Head First>>中的一句話.
            所以我們做的, 是如何應(yīng)對變化.
            推薦看一下: <<重構(gòu),改善既有代碼的設(shè)計>>



            # re: 調(diào)整思路——2008年繼續(xù)努力  回復(fù)  更多評論   

            2008-01-02 12:41 by Fox
            @eXile
            呵呵,謝謝!
            設(shè)計模式、重構(gòu)、重構(gòu)與模式,我都看過,只是在實際工作中很多東西被我們自己打了折扣……而且,上面的東西,看看開闊開闊思路還是好的。
            設(shè)計總在變化這句話我也依稀有點印象,但不變的東西更多,你總不能讓玩家今天這樣做明天那樣做啊……

            # re: 調(diào)整思路——2008年繼續(xù)努力  回復(fù)  更多評論   

            2008-01-02 13:52 by eXile
            我覺得, 好象你理解的設(shè)計總在變化這句話有偏差, 設(shè)計變化的原因主要有兩點:
            1) 需求的變化, 主要是系統(tǒng)功能的改進, 擴充, 版本的升級
            2) 需求的細化, 主要是需求本身不會考慮到所有的實現(xiàn)細節(jié), 在實現(xiàn)時才發(fā)現(xiàn)有設(shè)計不當(dāng)?shù)牡胤?

            # re: 調(diào)整思路——2008年繼續(xù)努力  回復(fù)  更多評論   

            2008-01-02 14:01 by eXile
            另外, 保證你的模塊不出差錯, 不是靠文檔和注釋, 而是靠測試,
            文檔和注釋,也分兩種, 一種是給自己看的, 一種是給別人看的, 這兩種寫法是不一樣的,
            對于寫給自己看的文檔, 如果會影響開發(fā)進度的話,為什么要寫它呢?這說明寫文檔的方法不對.

            # re: 調(diào)整思路——2008年繼續(xù)努力  回復(fù)  更多評論   

            2008-01-02 18:06 by Fox
            @eXile
            有道理~~~文檔寫起來痛苦啊~~~~~
            還是要適當(dāng)?shù)膶扅c,適合自己吧

            # re: 調(diào)整思路——2008年繼續(xù)努力  回復(fù)  更多評論   

            2008-01-05 17:06 by fallhunter
            從二位的討論中受益,感謝~~
            久久国产精品二国产精品| 久久久久久亚洲精品成人| 国产精品久久99| 久久精品国产99久久香蕉| 亚洲欧美一级久久精品| AV狠狠色丁香婷婷综合久久| 青青草国产精品久久| 亚洲精品乱码久久久久久蜜桃| 97精品国产97久久久久久免费| 伊人久久综在合线亚洲2019| 久久婷婷色综合一区二区| 精品午夜久久福利大片| 伊人久久大香线蕉综合5g| 国产成人久久精品二区三区| 99精品国产免费久久久久久下载| 久久最近最新中文字幕大全 | 色偷偷久久一区二区三区| 久久99九九国产免费看小说| 国产91久久精品一区二区| 欧美久久久久久午夜精品| 久久成人国产精品二三区| 免费久久人人爽人人爽av| 色99久久久久高潮综合影院| 久久国产亚洲精品麻豆| 久久久无码精品亚洲日韩蜜臀浪潮| 久久久精品国产Sm最大网站| 日本精品久久久中文字幕| 99久久国产热无码精品免费| 亚洲国产另类久久久精品| 无码八A片人妻少妇久久| 久久不见久久见免费影院www日本| 国产精品久久久久久| 久久久久99精品成人片三人毛片 | 久久AV高清无码| 亚洲∧v久久久无码精品| 亚洲综合伊人久久综合| 久久久久久久女国产乱让韩| 美女久久久久久| 久久亚洲AV无码精品色午夜 | 国产精品日韩深夜福利久久| 久久国产精品国产自线拍免费 |