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

            那誰的技術博客

            感興趣領域:高性能服務器編程,存儲,算法,Linux內核
            隨筆 - 210, 文章 - 0, 評論 - 1183, 引用 - 0
            數據加載中……

            方法與工具

            從最近遇到的幾個故事說起.

            故事一:
            某天晚上和室友聊天,談到使用Vim閱讀代碼,室友也是使用Vim的人,他說用類似ctags的查找定位功能不多,更多的時候,他閱讀一段代碼,要定位一個功能點,首先是從閱讀代碼文件的組織,了解項目的功能等入手,等這些都基本清楚了,定位起來就會快很多.我雖然認為,ctags實在是Vim里面一個很不錯的功能,不用這個實在可惜,但是他說的那套定位思路其實也是不錯的方法.其實我自己用慣了ctags類的功能之后,閱讀代碼的時候也會用惰性,更多的時候是要靠這些工具來幫我定位,而不是通過自己主動的思考和分析.

            故事二:
            我的經驗里面,寫完一段代碼之后的第一次編譯,如果編譯器報錯越少,那么可以認為這段代碼將來可能出現bug的幾率越小,簡而言之,我認為代碼的質量與第一次編譯的報錯數量成反比(哦,不用拿helloworld類的程序跟我鉆牛角尖了:).有些人寫的代碼,嘩嘩的寫了一大段,寫之前不考慮好,只想著到時候寫的不對了可以在編譯由編譯器的報錯來幫忙找問題,這個思路是不對的.編譯報錯越少的代碼,說明了作者寫的時候思路更清晰一些,考慮的更周全一些,所有的這些流程上的步驟走的都不錯了,所以才有最后編譯報錯少的結果.編譯報錯應該是寫代碼的結果之一,而不應當當成了找代碼問題的手段,這樣的思路,本末倒置了.

            故事三:
            進入新項目組后,組內對代碼編碼的流程有比較嚴格的要求,包括寫一個API之后需要寫一個針對這個API的各種情況的測試用例,提交代碼的時候,需要走codereview流程,需要使用cpplint檢驗代碼風格,需要將對應的測試用例也提交上去.這一套流程走下來,提交代碼的頻率比之以前,降低了很多,但是不可否認的是,也確實提高了代碼的質量.假設一個功能,由N個API構成,如果能對這N個API都做過詳細的測試,保證它們的輸入和輸出在各種情況下都能符合要求,那么很顯然的,最后這個功能也應該是正確的.反之,越是到了測試階段需要使用類似gdb這樣的調試器來定位問題的,會越讓人不放心---因為沒有制度和流程的保證,誰也不能說將來可能在哪個點會出問題.它可以幫你定位問題,但是沒有辦法告訴你已經沒有問題了,最后這一點,最終還是要通過嚴格的單元測試等流程來保證的.與第二個故事相同,我認為,在測試階段使用gdb定位問題的次數也與代碼的質量成反比:)

            這幾個故事綜合起來,想要表達的是,做一件事情,需要有流程,制度的保證,當然也需要工具(比如這幾個故事里面提到的Vim,gcc,gdb),但是工具就是工具,它只是一種手段,沒有辦法替代正確的思路,流程和制度等,僅能在整個過程中起到輔助的作用.而且,過分依賴工具,也會給人以惰性(比如前面提到的使用編譯器編譯代碼來找錯,比如使用gdb來保證功能正確性等).

            所以,更應該提倡的是正確的流程,制度,有了這些,項目的質量才能有所保證.比如,在寫一個功能點時,需要具體分解為哪幾步,每一步有哪幾個API,針對它們的測試用例有哪些,測試時的輸入和輸出有哪些,需要考慮的異常情況有哪些,等等的.這些都考慮清楚了,再動手寫,久而久之,我想這方面的能力會慢慢的提高.



            posted on 2010-04-15 00:57 那誰 閱讀(9417) 評論(8)  編輯 收藏 引用 所屬分類: 經驗教訓

            評論

            # re: 方法與工具  回復  更多評論   

            謝謝了,確實說的挺在理的。
            2010-04-15 07:48 | uhziel

            # re: 方法與工具  回復  更多評論   

            很同意第二條
            2010-04-15 09:37 | zuhd

            # re: 方法與工具  回復  更多評論   

            我用VIM 從來不帶插件
            2010-04-15 10:41 | cui

            # re: 方法與工具[未登錄]  回復  更多評論   

            @cui
            你閱讀代碼一個10W行的代碼也不用ctag那只能說明要不你是高手,要不你有傻逼或者裝逼之嫌。。。
            2010-04-15 12:52 | helloworld

            # re: 方法與工具  回復  更多評論   

            @helloworld
            呵呵,沒有說不用吧,這里的意思只是強調方法比工具更重要些.
            2010-04-15 12:54 | 那誰

            # re: 方法與工具  回復  更多評論   

            看來是linux的哦!
            2010-04-15 15:53 | 夢在天涯

            # re: 方法與工具  回復  更多評論   

            我喜歡將程序設計成類型敏感的,也就是說,只要計算過程發生明顯變化,那么其函數或結果的類型也會發生變化。這個時候就可以讓編譯器最大程度來替我們檢查出忘記修改的地方了。
            2010-04-15 15:54 | 陳梓瀚(vczh)

            # re: 方法與工具  回復  更多評論   

            @陳梓瀚(vczh)
            如你這樣目標明確的使用工具,倒是很好,我不是反對使用工具,只是覺得不應該本末倒置,方法比工具重要.
            2010-04-15 18:10 | 那誰
            一本色综合久久| 久久96国产精品久久久| 国产精品久久久久影院色| 久久久久se色偷偷亚洲精品av | 四虎国产精品免费久久久| 亚洲国产一成人久久精品| 人妻精品久久无码专区精东影业| 伊人久久综合精品无码AV专区| 久久狠狠爱亚洲综合影院| 亚洲国产天堂久久久久久| 亚洲一区精品伊人久久伊人| 久久精品一本到99热免费| 久久婷婷五月综合色奶水99啪 | 久久精品中文字幕久久| 久久精品国产精品国产精品污| 精品多毛少妇人妻AV免费久久| 亚洲国产香蕉人人爽成AV片久久| 国产69精品久久久久9999APGF | 色综合久久综合中文综合网| 久久综合九色综合网站| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 国产精品狼人久久久久影院| 久久综合视频网站| 日韩电影久久久被窝网| 狠狠色丁香久久婷婷综合| 国内精品久久人妻互换| 国产成人久久久精品二区三区| 欧美亚洲国产精品久久久久| 亚洲欧美伊人久久综合一区二区 | 2021少妇久久久久久久久久| 国产精品日韩深夜福利久久| 大香伊人久久精品一区二区| 久久久久无码精品国产不卡| 激情综合色综合久久综合| 日韩精品久久无码中文字幕| 亚洲精品NV久久久久久久久久| 国产精品久久久久久久久鸭| 亚洲国产精品狼友中文久久久| 久久免费视频网站| 久久精品国产亚洲av麻豆图片| 国产婷婷成人久久Av免费高清|