<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          重構(gòu)

          共 925字,需瀏覽 2分鐘

           ·

          2023-06-22 13:56


          什么是重構(gòu)

          重構(gòu):使用一系列重構(gòu)手法,在不改變軟件可觀察行為的前提下,調(diào)整其結(jié)構(gòu)。用戶的體驗不應(yīng)該有任何改變。如果我在重構(gòu)過程中發(fā)現(xiàn)了任何bug,重構(gòu)完成后同樣的 bug 應(yīng)該仍然存在。

          重構(gòu)的關(guān)鍵在于運用大量微小且不改變軟件表現(xiàn)的步驟,一步步達成大規(guī)模的修改。每個單獨的重構(gòu)很小。

          重構(gòu)的目的:提高軟件質(zhì)量

          1. 改進軟件設(shè)計:代碼不做重構(gòu),會因為每次的小改動導(dǎo)致混亂。類似于房間整理。其中之一就是減少重復(fù)代碼;

          2. 使代碼容易理解:讓其他開發(fā)者能夠讀懂,他人能夠讀懂你的代碼,就很容易去修改,提高開發(fā)效率。減少讀代碼時考古時間;

          3. 幫助找到 bug;

          4. 保持代碼的清晰和有序,避免代碼腐敗;

          什么時候重構(gòu)

          Kent Beck 提出了“兩頂帽子”的比喻。我們平常開發(fā)時包括兩個活動:添加新功能、重構(gòu)。兩頂帽子交替進行,一會開發(fā)新代碼,一會進行重構(gòu)。添加新功能時如果發(fā)現(xiàn)一段代碼可以更好,那就更換帽子,進行重構(gòu)工作,完成后再繼續(xù)添加新功能。

          以下是幾個常見的需要重構(gòu)的情況:

          1. 代碼重復(fù):如果你發(fā)現(xiàn)有大量的相似或完全相同的代碼,那么重構(gòu)就是必須的,你可以通過抽象方法或類來減少重復(fù)。

          2. 難以理解的代碼:如果代碼難以閱讀或理解,那么它需要重構(gòu),使得代碼更易于理解,可以提高團隊的生產(chǎn)力。

          3. 新增功能:在給現(xiàn)有代碼添加新功能前,往往需要對其進行重構(gòu),以保持代碼結(jié)構(gòu)的整潔。

          4. 性能優(yōu)化:如果代碼的性能不佳,那么通過重構(gòu)可能能找到優(yōu)化的機會。

          什么時候不重構(gòu)

          1. 一塊代碼可以正常工作,不需要修改那就不重構(gòu);一個功能隱藏在一個 api 下,那就可以不重構(gòu);

          2. 如果重寫比重構(gòu)容易,那就重寫;

          3. 緊迫的截止日期:在緊迫的截止日期面前,如果重構(gòu)可能導(dǎo)致項目延期,那么你可能需要權(quán)衡是否真的需要重構(gòu);

          4. 缺乏測試:如果代碼缺乏足夠的測試,重構(gòu)可能會引入新的錯誤,因此在重構(gòu)之前,你需要確保有足夠的測試用例。

          怎么重構(gòu)

          1. 瀏覽代碼;

          2. 對照代碼壞味道清單,檢查是否符合;

          3. 如果出現(xiàn)則選擇相應(yīng)的重構(gòu)方法重構(gòu),要注意的是,重構(gòu)方法只是某種情景下的一種修改代碼的方法,而不意味著這樣重構(gòu)在任何情況下的必然正確性。

          代碼壞味道清單

          • 神秘命名

          • 重復(fù)代碼

          • 過長函數(shù)

          • 過長參數(shù)列表

          • 數(shù)據(jù)泥團

          • 循環(huán)語句 Loops

          • 重復(fù)的 switch

          • if else 多層嵌套

          • 全局數(shù)據(jù)

          • 可變數(shù)據(jù)

          ?

          瀏覽 58
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国女人的生活毛片 | 不卡的a∨ | 国精产品久久久久久 | 午夜激情操一操 | 国产V在线最新观看视频 |