400-626-7377
采用案例貫穿的教學(xué)手法,詳細(xì)介紹了軟件設(shè)計(jì)過程需要注意的要點(diǎn)及難點(diǎn)
從軟件設(shè)計(jì)原則、設(shè)計(jì)模式、架構(gòu)設(shè)計(jì)到代碼重構(gòu)、性能優(yōu)化等多維度展開,構(gòu)建完整的軟件設(shè)計(jì)與重構(gòu)知識(shí)體系
讓學(xué)員在模擬實(shí)戰(zhàn)環(huán)境中體驗(yàn)完整的軟件設(shè)計(jì)與重構(gòu)過程,直面并解決實(shí)際開發(fā)中遇到的復(fù)雜問題,真正做到學(xué)以致用
講師將十幾年的行業(yè)經(jīng)驗(yàn)與大量的真實(shí)案例結(jié)合,有針對(duì)性的解決項(xiàng)目過程中技術(shù)人員常犯的錯(cuò)誤,拓展職業(yè)視野
在編碼之前制定設(shè)計(jì)方案,避免在開發(fā)過程中頻繁修改代碼,提高軟件開發(fā)效率
編碼之前進(jìn)行全面的需求分析和規(guī)劃,從而設(shè)計(jì)出更加優(yōu)秀的軟件架構(gòu)和模塊設(shè)計(jì),提高軟件的質(zhì)量和可靠性
設(shè)計(jì)出易于維護(hù)和升級(jí)的軟件系統(tǒng),減少維護(hù)成本和升級(jí)難度
在開發(fā)過程中發(fā)現(xiàn)問題和缺陷,避免在后期進(jìn)行大量的修改和調(diào)整,從而減少軟件開發(fā)成本
優(yōu)化代碼結(jié)構(gòu)、提高可讀性和可維護(hù)性來提升代碼質(zhì)量
優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu),提高軟件的性能和響應(yīng)速度
使軟件更加靈活,以適應(yīng)新的需求,同時(shí)保持代碼的清晰和可維護(hù)性
將軟件更新到最新的技術(shù)棧,提高安全性、穩(wěn)定性和可擴(kuò)展性
統(tǒng)一代碼風(fēng)格,提高團(tuán)隊(duì)合作效率
幫助識(shí)別和修復(fù)潛在的bug,減少軟件的故障率和維護(hù)成本
在真實(shí)場(chǎng)景中尋找問題根源,解決設(shè)計(jì)難題,并制定正確的設(shè)計(jì)方案
用慢動(dòng)作的手法還原需要變更,通過每一次的正確設(shè)計(jì),不讓軟件退化,保證高質(zhì)量
重構(gòu)是軟件變更中保持高質(zhì)量的必然
學(xué)會(huì)運(yùn)用“兩頂帽子”的方式應(yīng)對(duì)變更
實(shí)戰(zhàn)角度講解“小步快跑”過程
掌握“軟件重構(gòu)七步曲”
自己動(dòng)手重構(gòu)一個(gè)大系統(tǒng)
學(xué)會(huì)有效解決軟件重構(gòu)面臨的難題
核心思想講解+軟件重構(gòu)實(shí)踐+點(diǎn)評(píng)分析總結(jié)
獲得由工業(yè)和信息化部教育與考試中心統(tǒng)一頒發(fā)《軟件設(shè)計(jì)模式與重構(gòu)工程師》工業(yè)和信息化職業(yè)能力證書
對(duì)軟件開發(fā)有興趣,希望系統(tǒng)地學(xué)習(xí)軟件設(shè)計(jì)模式和重構(gòu)技術(shù)的人群
已經(jīng)具備一定軟件開發(fā)經(jīng)驗(yàn),但希望提高代碼質(zhì)量、可維護(hù)性和擴(kuò)展性的開發(fā)者
想要進(jìn)一步深化對(duì)軟件設(shè)計(jì)原則和最佳實(shí)踐的理解,以及通過重構(gòu)提升現(xiàn)有代碼質(zhì)量的開發(fā)者
希望了解如何在整個(gè)團(tuán)隊(duì)或項(xiàng)目中推廣和應(yīng)用設(shè)計(jì)模式和重構(gòu)技術(shù)的人群
軟件開發(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ǔ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ù)用的常用方法
利用DeepSeek進(jìn)行代碼的優(yōu)化
1.國(guó)產(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ù)
解決方案:以知識(shí)庫作為規(guī)范指導(dǎo)AI編程
1.通過知識(shí)庫制定DeepSeek軟件開發(fā)的模板與規(guī)范:
1)文檔模板:架構(gòu)設(shè)計(jì)的模板、用例模型的模板、領(lǐng)域模型的模板
2)開發(fā)規(guī)范:領(lǐng)域?qū)ο蟆⒎?wù)接口、DSL配置、測(cè)試用例的開發(fā)規(guī)范
2.基于知識(shí)庫進(jìn)行的DeepSeek軟件開發(fā):
1)基于業(yè)務(wù)需求進(jìn)行分析設(shè)計(jì)
2)將大任務(wù)拆分成無數(shù)個(gè)小任務(wù)
3)基于知識(shí)庫的規(guī)范進(jìn)行AI編程
4)基于知識(shí)庫的規(guī)范AI編寫測(cè)試用例
軟件重構(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è)完整的DeepSeek開發(fā)過程
1.通過知識(shí)庫制定DeepSeek軟件開發(fā)的模板與規(guī)范:
1)文檔模板:架構(gòu)設(shè)計(jì)的模板、用例模型的模板、領(lǐng)域模型的模板
2)開發(fā)規(guī)范:領(lǐng)域?qū)ο蟆⒎?wù)接口、DSL配置、測(cè)試用例的開發(fā)規(guī)范
2.基于知識(shí)庫進(jìn)行的DeepSeek軟件開發(fā):
1)DeepSeek輔助的軟件需求探索與編寫需求文檔
2)DeepSeek輔助編寫用例模型
3)DeepSeek輔助編寫領(lǐng)域模型
4)DeepSeek輔助形成數(shù)據(jù)庫設(shè)計(jì),編寫SQL腳本
5)DeepSeek輔助編寫領(lǐng)域?qū)ο笈c服務(wù)接口代碼,進(jìn)行DSL配置
6)DeepSeek輔助,基于某個(gè)平臺(tái)進(jìn)行業(yè)務(wù)代碼的編寫
7)DeepSeek輔助創(chuàng)建測(cè)試用例代碼
1. 設(shè)計(jì)模式的由來
2. 設(shè)計(jì)模式的發(fā)展
3. 設(shè)計(jì)模式對(duì)高質(zhì)量軟件設(shè)計(jì)的作用
1. 軟件設(shè)計(jì)中外部接口的難題
2. 第三方框架帶來的設(shè)計(jì)難題
3. 適配器模式及其概念
4. 實(shí)戰(zhàn)演練AI的設(shè)計(jì)編碼
適配器模式的應(yīng)用
1. 適配器模式解決第三方框架帶來的難題
案例:Hibernate適配器的設(shè)計(jì)
2. 適配器模式解決外部接口的設(shè)計(jì)難題
案例:第三方支付接口的設(shè)計(jì)
案例:財(cái)務(wù)數(shù)據(jù)接口的設(shè)計(jì)
1. 工資發(fā)放功能遇到的難題
1) 工資發(fā)放功能最初的設(shè)計(jì)及其問題
2) 對(duì)問題的分析過程及其新的設(shè)計(jì)思路
2. 策略模式及其概念
3. 實(shí)戰(zhàn)演練AI的設(shè)計(jì)編碼
策略模式的應(yīng)用
1. 案例:工資發(fā)放功能設(shè)計(jì)改進(jìn)的過程
1) 工資發(fā)放功能的Java實(shí)現(xiàn)
2) 工資發(fā)放功能的C++實(shí)現(xiàn)
2. 案例:折扣功能的設(shè)計(jì)實(shí)現(xiàn)
1) 深入理解開放-封閉原則
2) 折扣功能的變更與改進(jìn)過程
探討軟件設(shè)計(jì)中遇到的難題
1. 依賴反轉(zhuǎn)原則的設(shè)計(jì)難題
2. 開放-封閉原則的設(shè)計(jì)難題
3. 探討工廠模式的本質(zhì)
簡(jiǎn)單工廠模式的設(shè)計(jì)實(shí)現(xiàn)
1. 簡(jiǎn)單工廠模式的C++實(shí)現(xiàn)
2. 基于配置的簡(jiǎn)單工廠模式
3. 剖析簡(jiǎn)單工廠如何實(shí)現(xiàn)依賴反轉(zhuǎn)原則
案例:剖析Spring的beanFactory
4. 解讀工廠模式對(duì)設(shè)計(jì)的重大意義
5. 講解如何創(chuàng)建一個(gè)工廠
1) 創(chuàng)建工廠的步驟與關(guān)鍵點(diǎn)
2) 利用Spring框架簡(jiǎn)化工廠類的設(shè)計(jì)
6. 實(shí)戰(zhàn)演練用AI設(shè)計(jì)一個(gè)工廠
什么是單例模式
1. 設(shè)計(jì)工廠類面臨的問題
2. 單例模式及其概念
3. 如何實(shí)現(xiàn)單例模式
單例模式的應(yīng)用
1. 用單例模式設(shè)計(jì)工廠
2. 用單例模式提高性能
什么是原型模式
1. 工廠類在提供產(chǎn)品時(shí)遇到的設(shè)計(jì)問題
2. 原型模式及其概念
原型模式的設(shè)計(jì)實(shí)現(xiàn)
案例:函數(shù)調(diào)用的無副作用問題
案例:JavsScript中的原型模式
什么是模板方法模式
1. 煮咖啡給我們的啟示
2. 設(shè)計(jì)工廠類的新思路
3. 模板方法模式及其概念
模板方法模式的作用與技巧
案例:一個(gè)工廠模板的設(shè)計(jì)與實(shí)現(xiàn)
深入理解不要重復(fù)自己原則
1. 重復(fù)代碼帶來的嚴(yán)重后果
2. 散彈式修改及其解決思路
3. 探討實(shí)現(xiàn)代碼復(fù)用的難題
4. 代碼復(fù)用在不同場(chǎng)合采用的方法
5. 模板方法模式在代碼復(fù)用中的作用
1. 業(yè)務(wù)量增長(zhǎng)帶來的多數(shù)據(jù)源問題
2. 運(yùn)用裝飾者模式巧妙解決多數(shù)據(jù)源問題
3. 裝飾者模式及其概念
4. 實(shí)戰(zhàn)演練用AI進(jìn)行設(shè)計(jì)變更
裝飾者模式的應(yīng)用
案例:多數(shù)據(jù)源的設(shè)計(jì)實(shí)現(xiàn)
1. 多數(shù)據(jù)源問題的分析設(shè)計(jì)過程
2. 多數(shù)據(jù)源的設(shè)計(jì)與實(shí)現(xiàn)
案例:商城收銀系統(tǒng)的設(shè)計(jì)變更過程
1. 商城收銀系統(tǒng)期初的設(shè)計(jì)
2. 混合策略的設(shè)計(jì)與實(shí)現(xiàn)
3. 多層裝飾者的設(shè)計(jì)與實(shí)現(xiàn)
1. 對(duì)象繼承的泛濫
2. 橋接模式及其概念
3. 實(shí)戰(zhàn)演練用AI進(jìn)行設(shè)計(jì)變更
橋接模式的應(yīng)用
案例:?jiǎn)T工管理與工資發(fā)放的設(shè)計(jì)
1. 員工管理與工資發(fā)放帶來的繼承泛濫問題
2. 采用橋接模式的設(shè)計(jì)與實(shí)現(xiàn)
案例:查詢支持類的設(shè)計(jì)
1. 查詢支持類遭遇的繼承泛濫問題
2. 查詢支持類的解決方案
3. 單例模式下查詢支持類的設(shè)計(jì)
深入體會(huì)單一職責(zé)原則
什么是享元模式
1. Hibernate是怎樣訪問數(shù)據(jù)的
2. 享元模式及其概念
享元模式的應(yīng)用
案例:數(shù)據(jù)緩存的設(shè)計(jì)實(shí)現(xiàn)
案例:享元模式在大數(shù)據(jù)中的應(yīng)用
用一個(gè)情景劇秒懂其它設(shè)計(jì)模式
觀察者模式:JobHunter的情景劇
代理模式:老板與秘書的差異
命令模式:像工作流一樣處理業(yè)務(wù)
外觀模式:超級(jí)家庭影院的煩惱
構(gòu)建器模式:SQL Builder的設(shè)計(jì)
組合模式:如何構(gòu)建一棵樹
中介者模式:QQ在溝通中的作用
迭代器模式:如何順序訪問一個(gè)集合
1. 重構(gòu)是一種習(xí)慣
2. 重構(gòu)讓程序可讀
3. 重構(gòu),才好復(fù)用
4. 先重構(gòu),再擴(kuò)展
5. 緊急任務(wù)時(shí)的重構(gòu)
1. 重構(gòu)初期的困局
2. 解耦與自動(dòng)化測(cè)試
3. 建立自動(dòng)化測(cè)試體系
4. 通過AI建立自動(dòng)化測(cè)試體系
1. 評(píng)價(jià)軟件質(zhì)量的指標(biāo)
2. 評(píng)價(jià)軟件質(zhì)量的工具