課程簡(jiǎn)介
本課程首先深入剖析軟件質(zhì)量下降的根源,提出重構(gòu)是軟件變更中保持高質(zhì)量的必然,講解如何運(yùn)用“兩頂帽子”的方式應(yīng)對(duì)變更,拒絕腐化。接著,用真實(shí)案例講解已經(jīng)代碼腐化的遺留系統(tǒng)是如何通過“軟件重構(gòu)七步曲”,由簡(jiǎn)入深、循序漸進(jìn)地重構(gòu)一個(gè)大系統(tǒng)。演練在整個(gè)過程中,如何通過AI編程,更加快速而高效地優(yōu)化代碼、軟件重構(gòu)、建立自動(dòng)化測(cè)試,保持代碼整潔。
目標(biāo)收益
培訓(xùn)對(duì)象
課程大綱
第一單元 剖析軟件退化的根源 |
軟件開發(fā)的輪回: 1. 起初客戶提出的需求并不復(fù)雜 2. 隨著日后的變更,系統(tǒng)開始變得越來越復(fù)雜 3. 激烈的市場(chǎng)要求快速交付 4. 越來越復(fù)雜的系統(tǒng)交付速度會(huì)越來越慢 5. 越來越快的技術(shù)發(fā)展要求技術(shù)架構(gòu)不斷更迭 帶來的問題: 1. 系統(tǒng)交付速度越來越慢而不能適應(yīng)市場(chǎng)變化 2. 技術(shù)架構(gòu)不斷更迭越來越困難而不能適應(yīng)技術(shù)發(fā)展 3. 測(cè)試變得越來越困難而任務(wù)繁重 4. 軟件系統(tǒng)越來越笨重而不適應(yīng)未來變化 分析與反思 探討軟件退化的根源 案例分析:演示電商網(wǎng)站付款功能代碼質(zhì)量下降的過程 1. 起初的設(shè)計(jì) 2. 隨后的變更 3. 質(zhì)量不斷下降的過程 軟件質(zhì)量下降的根源: 1. 軟件總是因變更而變得越來越復(fù)雜 2. 軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復(fù)雜的軟件需求 3. 必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求 4. 重構(gòu)是保持高質(zhì)量軟件設(shè)計(jì)的習(xí)慣 兩頂帽子的設(shè)計(jì)方式 軟件是因需求變更而質(zhì)量下降嗎? 案例分析:推演軟件變更的設(shè)計(jì)過程 應(yīng)對(duì)軟件變更的最佳方式:兩頂帽子 1. 重構(gòu)原有代碼以適應(yīng)新的需求 2. 實(shí)現(xiàn)新的需求 案例:演示兩頂帽子的設(shè)計(jì)過程 |
第二單元 高質(zhì)量的軟件設(shè)計(jì) |
準(zhǔn)確理解高質(zhì)量代碼 1. 剖析高質(zhì)量代碼設(shè)計(jì)的本質(zhì) 2. 軟件的質(zhì)量保證:內(nèi)部質(zhì)量與外部質(zhì)量 3. 高質(zhì)量軟件設(shè)計(jì)的標(biāo)準(zhǔn):易于閱讀、易于維護(hù)、易于變更 準(zhǔn)確理解代碼整潔之道 1. 什么時(shí)候應(yīng)該代碼整潔 2. 函數(shù)代碼整潔應(yīng)當(dāng)遵循的原則 3. 類與接口代碼整潔應(yīng)當(dāng)遵循的原則 4. 注釋代碼的整潔之道 5. 異常處理的代碼整潔之道 案例:實(shí)戰(zhàn)項(xiàng)目的整潔代碼展示 案例分析軟件設(shè)計(jì)原則及其本質(zhì) 1. 低耦合 1) 依賴反轉(zhuǎn)原則(DIP) 案例:購票業(yè)務(wù)類與數(shù)據(jù)訪問類 2) 開放-封閉原則(OCP) 案例:需求變更與可擴(kuò)展點(diǎn)設(shè)計(jì) 案例:Square/Circle的解決方案 2. 高內(nèi)聚 1) 單一職責(zé)原則(SRP) 案例:財(cái)務(wù)憑證變更帶來的問題 案例:超級(jí)大函數(shù)與大對(duì)象的難題 案例:MySQL讀寫分離的改造過程 2) 不要重復(fù)自己原則(DRY) 典型的代碼重復(fù)案例與散彈式修改 探討代碼復(fù)用的設(shè)計(jì)難題與軟件重構(gòu) 案例講解:代碼復(fù)用的常用方法 基于AI編程的DDD落地實(shí)踐 1.國產(chǎn)智能大模型DeepSeek的13個(gè)應(yīng)用場(chǎng)景: 代碼改寫、代碼解釋、代碼生成、中英文翻譯,等等 2.智能大模型核心應(yīng)用的精華: 提示詞工程、文檔上傳、搭建本地知識(shí)庫 3.AI自動(dòng)化編程帶來的挑戰(zhàn): 1)不能交給AI過于復(fù)雜的任務(wù) 2)AI編寫的代碼如何規(guī)范編程,基于某個(gè)平臺(tái)進(jìn)行編程 3)AI編寫的代碼,日后如何變更維護(hù) 解決方案:以DDD作為規(guī)范指導(dǎo)AI編程 1.通過知識(shí)庫制定AI軟件開發(fā)的模板與規(guī)范: 1)文檔模板:架構(gòu)設(shè)計(jì)的模板、用例模型的模板、領(lǐng)域模型的模板 2)開發(fā)規(guī)范:領(lǐng)域?qū)ο?、服?wù)接口、DSL配置、測(cè)試用例的開發(fā)規(guī)范 2.基于知識(shí)庫進(jìn)行的AI軟件開發(fā): 1)基于業(yè)務(wù)需求進(jìn)行分析設(shè)計(jì) 2)將大任務(wù)拆分成無數(shù)個(gè)小任務(wù) 3)基于知識(shí)庫的規(guī)范進(jìn)行AI編程 4)基于知識(shí)庫的規(guī)范AI編寫測(cè)試用例 |
第三單元 基于AI的軟件重構(gòu) |
軟件重構(gòu)的概念與設(shè)計(jì)思想 1. 重構(gòu)是一系列代碼的等量變換 案例:一個(gè)Hello World重構(gòu)過程 2. 重構(gòu)的保險(xiǎn)索:自動(dòng)化測(cè)試 案例:Hello World的自動(dòng)化測(cè)試過程 3. 軟件修改的四種動(dòng)機(jī)——重構(gòu)的價(jià)值 4. 一個(gè)真實(shí)的謊言——重構(gòu)的誤區(qū) 5. 重構(gòu)的主要方法與技巧 重構(gòu)是高質(zhì)量編碼的實(shí)現(xiàn)方式 1. 重構(gòu)是代碼整潔與高質(zhì)量編碼的實(shí)現(xiàn)方式 1) 準(zhǔn)確理解軟件重構(gòu) 2) 每次變更的時(shí)候,先重構(gòu)再實(shí)現(xiàn)需求 3) 每過一段時(shí)間就通過重構(gòu)整理一次代碼 2. 基于AI的軟件重構(gòu)思路 1)用AI進(jìn)行原始代碼的理解 2)用AI進(jìn)行代碼的改寫與優(yōu)化 3)用AI編寫測(cè)試用例 3. 案例:演練Hello World的維護(hù)變更過程 1) 最初的軟件設(shè)計(jì) 2) 第一次變更:抽取方法與抽取類 3) 第二次變更:抽取接口與系統(tǒng)分層 4)重構(gòu)完成以后,用測(cè)試用例進(jìn)行驗(yàn)證 演練一個(gè)完整的重構(gòu)過程 案例分析:重構(gòu)一個(gè)大型遺留系統(tǒng) 1.重構(gòu)第一步:分解大函數(shù) 超級(jí)大函數(shù)及其危害 案例:演示大函數(shù)產(chǎn)生的過程 案例:演示抽取方法操作步驟 實(shí)踐抽取方法會(huì)遇到的問題和解決方案 演練AI編程在抽取方法中的應(yīng)用 2.重構(gòu)第二步:拆分大對(duì)象 超級(jí)大對(duì)象及其危害 案例:演示超級(jí)大對(duì)象的產(chǎn)生過程 案例:演示抽取類的操作步驟 講解單一職責(zé)設(shè)計(jì)原則 案例:演示“分久必合,合久必分”的重構(gòu)過程 演練AI編程在抽取類中的應(yīng)用 3.重構(gòu)第三步:提高復(fù)用率 講解順序編程及其危害 “不要重復(fù)代碼”原則 案例:提高代碼復(fù)用的6個(gè)方法 案例:演示新增代碼時(shí)的代碼復(fù)用過程 用靜態(tài)檢查工具檢查重復(fù)代碼 4.重構(gòu)第四步:可擴(kuò)展設(shè)計(jì) 過度設(shè)計(jì) vs. 恰如其分的設(shè)計(jì) 講解“開放-封閉”的設(shè)計(jì)原則 案例:講解可擴(kuò)展設(shè)計(jì)的4個(gè)方法 案例:講解新增代碼的可擴(kuò)展設(shè)計(jì)過程 5.重構(gòu)第五步:降低耦合度 案例:講解接口、實(shí)現(xiàn)與工廠模式 案例:講解外部接口解耦與適配器模式 演練用AI編程進(jìn)行設(shè)計(jì)模式的設(shè)計(jì) 6.重構(gòu)第六步:系統(tǒng)分層 反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu) 遺留系統(tǒng)如何擁抱需求變化 遺留系統(tǒng)如何應(yīng)對(duì)技術(shù)變革 7.重構(gòu)第七步:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的概念 講解領(lǐng)域模型分析方法 演練一個(gè)完整的AI開發(fā)過程 1.通過知識(shí)庫制定AI軟件開發(fā)的模板與規(guī)范: 1)文檔模板:架構(gòu)設(shè)計(jì)的模板、用例模型的模板、領(lǐng)域模型的模板 2)開發(fā)規(guī)范:領(lǐng)域?qū)ο?、服?wù)接口、DSL配置、測(cè)試用例的開發(fā)規(guī)范 2.基于知識(shí)庫進(jìn)行的AI軟件開發(fā): 1)AI輔助的軟件需求探索與編寫需求文檔 2)AI輔助編寫用例模型 3)AI輔助編寫領(lǐng)域模型 4)AI輔助形成數(shù)據(jù)庫設(shè)計(jì),編寫SQL腳本 5)AI輔助編寫領(lǐng)域?qū)ο笈c服務(wù)接口代碼,進(jìn)行DSL配置 6)AI輔助,基于某個(gè)平臺(tái)進(jìn)行業(yè)務(wù)代碼的編寫 7)AI輔助創(chuàng)建測(cè)試用例代碼 |
第四單元 關(guān)于重構(gòu)的深度討論 |
什么時(shí)候重構(gòu) 1. 重構(gòu)是一種習(xí)慣 2. 重構(gòu)讓程序可讀 3. 重構(gòu),才好復(fù)用 4. 先重構(gòu),再擴(kuò)展 5. 緊急任務(wù)時(shí)的重構(gòu) 自動(dòng)化測(cè)試的困境 1. 重構(gòu)初期的困局 2. 解耦與自動(dòng)化測(cè)試 3. 建立自動(dòng)化測(cè)試體系 4. 通過AI建立自動(dòng)化測(cè)試體系 關(guān)于重構(gòu)效果的評(píng)價(jià) 1. 評(píng)價(jià)軟件質(zhì)量的指標(biāo) 2. 評(píng)價(jià)軟件質(zhì)量的工具 |
第一單元 剖析軟件退化的根源 軟件開發(fā)的輪回: 1. 起初客戶提出的需求并不復(fù)雜 2. 隨著日后的變更,系統(tǒng)開始變得越來越復(fù)雜 3. 激烈的市場(chǎng)要求快速交付 4. 越來越復(fù)雜的系統(tǒng)交付速度會(huì)越來越慢 5. 越來越快的技術(shù)發(fā)展要求技術(shù)架構(gòu)不斷更迭 帶來的問題: 1. 系統(tǒng)交付速度越來越慢而不能適應(yīng)市場(chǎng)變化 2. 技術(shù)架構(gòu)不斷更迭越來越困難而不能適應(yīng)技術(shù)發(fā)展 3. 測(cè)試變得越來越困難而任務(wù)繁重 4. 軟件系統(tǒng)越來越笨重而不適應(yīng)未來變化 分析與反思 探討軟件退化的根源 案例分析:演示電商網(wǎng)站付款功能代碼質(zhì)量下降的過程 1. 起初的設(shè)計(jì) 2. 隨后的變更 3. 質(zhì)量不斷下降的過程 軟件質(zhì)量下降的根源: 1. 軟件總是因變更而變得越來越復(fù)雜 2. 軟件結(jié)構(gòu)已經(jīng)不再適應(yīng)復(fù)雜的軟件需求 3. 必須要調(diào)整軟件結(jié)構(gòu)以適應(yīng)新的軟件需求 4. 重構(gòu)是保持高質(zhì)量軟件設(shè)計(jì)的習(xí)慣 兩頂帽子的設(shè)計(jì)方式 軟件是因需求變更而質(zhì)量下降嗎? 案例分析:推演軟件變更的設(shè)計(jì)過程 應(yīng)對(duì)軟件變更的最佳方式:兩頂帽子 1. 重構(gòu)原有代碼以適應(yīng)新的需求 2. 實(shí)現(xiàn)新的需求 案例:演示兩頂帽子的設(shè)計(jì)過程 |
第二單元 高質(zhì)量的軟件設(shè)計(jì) 準(zhǔn)確理解高質(zhì)量代碼 1. 剖析高質(zhì)量代碼設(shè)計(jì)的本質(zhì) 2. 軟件的質(zhì)量保證:內(nèi)部質(zhì)量與外部質(zhì)量 3. 高質(zhì)量軟件設(shè)計(jì)的標(biāo)準(zhǔn):易于閱讀、易于維護(hù)、易于變更 準(zhǔn)確理解代碼整潔之道 1. 什么時(shí)候應(yīng)該代碼整潔 2. 函數(shù)代碼整潔應(yīng)當(dāng)遵循的原則 3. 類與接口代碼整潔應(yīng)當(dāng)遵循的原則 4. 注釋代碼的整潔之道 5. 異常處理的代碼整潔之道 案例:實(shí)戰(zhàn)項(xiàng)目的整潔代碼展示 案例分析軟件設(shè)計(jì)原則及其本質(zhì) 1. 低耦合 1) 依賴反轉(zhuǎn)原則(DIP) 案例:購票業(yè)務(wù)類與數(shù)據(jù)訪問類 2) 開放-封閉原則(OCP) 案例:需求變更與可擴(kuò)展點(diǎn)設(shè)計(jì) 案例:Square/Circle的解決方案 2. 高內(nèi)聚 1) 單一職責(zé)原則(SRP) 案例:財(cái)務(wù)憑證變更帶來的問題 案例:超級(jí)大函數(shù)與大對(duì)象的難題 案例:MySQL讀寫分離的改造過程 2) 不要重復(fù)自己原則(DRY) 典型的代碼重復(fù)案例與散彈式修改 探討代碼復(fù)用的設(shè)計(jì)難題與軟件重構(gòu) 案例講解:代碼復(fù)用的常用方法 基于AI編程的DDD落地實(shí)踐 1.國產(chǎn)智能大模型DeepSeek的13個(gè)應(yīng)用場(chǎng)景: 代碼改寫、代碼解釋、代碼生成、中英文翻譯,等等 2.智能大模型核心應(yīng)用的精華: 提示詞工程、文檔上傳、搭建本地知識(shí)庫 3.AI自動(dòng)化編程帶來的挑戰(zhàn): 1)不能交給AI過于復(fù)雜的任務(wù) 2)AI編寫的代碼如何規(guī)范編程,基于某個(gè)平臺(tái)進(jìn)行編程 3)AI編寫的代碼,日后如何變更維護(hù) 解決方案:以DDD作為規(guī)范指導(dǎo)AI編程 1.通過知識(shí)庫制定AI軟件開發(fā)的模板與規(guī)范: 1)文檔模板:架構(gòu)設(shè)計(jì)的模板、用例模型的模板、領(lǐng)域模型的模板 2)開發(fā)規(guī)范:領(lǐng)域?qū)ο?、服?wù)接口、DSL配置、測(cè)試用例的開發(fā)規(guī)范 2.基于知識(shí)庫進(jìn)行的AI軟件開發(fā): 1)基于業(yè)務(wù)需求進(jìn)行分析設(shè)計(jì) 2)將大任務(wù)拆分成無數(shù)個(gè)小任務(wù) 3)基于知識(shí)庫的規(guī)范進(jìn)行AI編程 4)基于知識(shí)庫的規(guī)范AI編寫測(cè)試用例 |
第三單元 基于AI的軟件重構(gòu) 軟件重構(gòu)的概念與設(shè)計(jì)思想 1. 重構(gòu)是一系列代碼的等量變換 案例:一個(gè)Hello World重構(gòu)過程 2. 重構(gòu)的保險(xiǎn)索:自動(dòng)化測(cè)試 案例:Hello World的自動(dòng)化測(cè)試過程 3. 軟件修改的四種動(dòng)機(jī)——重構(gòu)的價(jià)值 4. 一個(gè)真實(shí)的謊言——重構(gòu)的誤區(qū) 5. 重構(gòu)的主要方法與技巧 重構(gòu)是高質(zhì)量編碼的實(shí)現(xiàn)方式 1. 重構(gòu)是代碼整潔與高質(zhì)量編碼的實(shí)現(xiàn)方式 1) 準(zhǔn)確理解軟件重構(gòu) 2) 每次變更的時(shí)候,先重構(gòu)再實(shí)現(xiàn)需求 3) 每過一段時(shí)間就通過重構(gòu)整理一次代碼 2. 基于AI的軟件重構(gòu)思路 1)用AI進(jìn)行原始代碼的理解 2)用AI進(jìn)行代碼的改寫與優(yōu)化 3)用AI編寫測(cè)試用例 3. 案例:演練Hello World的維護(hù)變更過程 1) 最初的軟件設(shè)計(jì) 2) 第一次變更:抽取方法與抽取類 3) 第二次變更:抽取接口與系統(tǒng)分層 4)重構(gòu)完成以后,用測(cè)試用例進(jìn)行驗(yàn)證 演練一個(gè)完整的重構(gòu)過程 案例分析:重構(gòu)一個(gè)大型遺留系統(tǒng) 1.重構(gòu)第一步:分解大函數(shù) 超級(jí)大函數(shù)及其危害 案例:演示大函數(shù)產(chǎn)生的過程 案例:演示抽取方法操作步驟 實(shí)踐抽取方法會(huì)遇到的問題和解決方案 演練AI編程在抽取方法中的應(yīng)用 2.重構(gòu)第二步:拆分大對(duì)象 超級(jí)大對(duì)象及其危害 案例:演示超級(jí)大對(duì)象的產(chǎn)生過程 案例:演示抽取類的操作步驟 講解單一職責(zé)設(shè)計(jì)原則 案例:演示“分久必合,合久必分”的重構(gòu)過程 演練AI編程在抽取類中的應(yīng)用 3.重構(gòu)第三步:提高復(fù)用率 講解順序編程及其危害 “不要重復(fù)代碼”原則 案例:提高代碼復(fù)用的6個(gè)方法 案例:演示新增代碼時(shí)的代碼復(fù)用過程 用靜態(tài)檢查工具檢查重復(fù)代碼 4.重構(gòu)第四步:可擴(kuò)展設(shè)計(jì) 過度設(shè)計(jì) vs. 恰如其分的設(shè)計(jì) 講解“開放-封閉”的設(shè)計(jì)原則 案例:講解可擴(kuò)展設(shè)計(jì)的4個(gè)方法 案例:講解新增代碼的可擴(kuò)展設(shè)計(jì)過程 5.重構(gòu)第五步:降低耦合度 案例:講解接口、實(shí)現(xiàn)與工廠模式 案例:講解外部接口解耦與適配器模式 演練用AI編程進(jìn)行設(shè)計(jì)模式的設(shè)計(jì) 6.重構(gòu)第六步:系統(tǒng)分層 反思軟件架構(gòu)需要怎樣的分層結(jié)構(gòu) 遺留系統(tǒng)如何擁抱需求變化 遺留系統(tǒng)如何應(yīng)對(duì)技術(shù)變革 7.重構(gòu)第七步:領(lǐng)域驅(qū)動(dòng)設(shè)計(jì) 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的概念 講解領(lǐng)域模型分析方法 演練一個(gè)完整的AI開發(fā)過程 1.通過知識(shí)庫制定AI軟件開發(fā)的模板與規(guī)范: 1)文檔模板:架構(gòu)設(shè)計(jì)的模板、用例模型的模板、領(lǐng)域模型的模板 2)開發(fā)規(guī)范:領(lǐng)域?qū)ο?、服?wù)接口、DSL配置、測(cè)試用例的開發(fā)規(guī)范 2.基于知識(shí)庫進(jìn)行的AI軟件開發(fā): 1)AI輔助的軟件需求探索與編寫需求文檔 2)AI輔助編寫用例模型 3)AI輔助編寫領(lǐng)域模型 4)AI輔助形成數(shù)據(jù)庫設(shè)計(jì),編寫SQL腳本 5)AI輔助編寫領(lǐng)域?qū)ο笈c服務(wù)接口代碼,進(jìn)行DSL配置 6)AI輔助,基于某個(gè)平臺(tái)進(jìn)行業(yè)務(wù)代碼的編寫 7)AI輔助創(chuàng)建測(cè)試用例代碼 |
第四單元 關(guān)于重構(gòu)的深度討論 什么時(shí)候重構(gòu) 1. 重構(gòu)是一種習(xí)慣 2. 重構(gòu)讓程序可讀 3. 重構(gòu),才好復(fù)用 4. 先重構(gòu),再擴(kuò)展 5. 緊急任務(wù)時(shí)的重構(gòu) 自動(dòng)化測(cè)試的困境 1. 重構(gòu)初期的困局 2. 解耦與自動(dòng)化測(cè)試 3. 建立自動(dòng)化測(cè)試體系 4. 通過AI建立自動(dòng)化測(cè)試體系 關(guān)于重構(gòu)效果的評(píng)價(jià) 1. 評(píng)價(jià)軟件質(zhì)量的指標(biāo) 2. 評(píng)價(jià)軟件質(zhì)量的工具 |