91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

別急著動手寫代碼:先想清楚這幾點,后面少改八百回

工程師高培 ? 來源:工程師高培 ? 作者:工程師高培 ? 2026-03-24 11:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

軟件開發(fā)從來不是一次寫完就結(jié)束的事情。需求會變,技術(shù)會升級,團(tuán)隊會流動。一套代碼能跑多久、改起來順不順手、新同事接手快不快,這些往往比“第一次寫出來”更重要。高質(zhì)量軟件設(shè)計與設(shè)計模式,談一談從原則到實踐的幾條路徑,設(shè)計模式不是銀彈,但理解背后的原則,能幫我們少走一些彎路。

一、什么算“高質(zhì)量”的軟件

很多人把“能運行”等同于“好”。其實軟件質(zhì)量分內(nèi)外兩層:外部質(zhì)量是用戶看到的功能正確、響應(yīng)快、不崩潰;內(nèi)部質(zhì)量是代碼可讀、可維護(hù)、容易改。外部質(zhì)量靠測試驗證,內(nèi)部質(zhì)量靠設(shè)計保障。

判斷內(nèi)部質(zhì)量有幾個簡單標(biāo)準(zhǔn):新同事看代碼能不能快速理解?改一個功能會不會牽連一堆地方?加新需求時是“加新代碼”還是“改老代碼”?如果答案不樂觀,說明設(shè)計需要調(diào)整。

二、幾個基礎(chǔ)的設(shè)計原則

依賴反轉(zhuǎn):高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴抽象。比如業(yè)務(wù)邏輯層不應(yīng)該直接依賴具體的數(shù)據(jù)庫訪問類,而是依賴一個數(shù)據(jù)訪問接口。這樣換數(shù)據(jù)庫時,業(yè)務(wù)代碼不用改。

開放-封閉:對擴(kuò)展開放,對修改封閉。需求來了,盡量加新類新方法,而不是改老代碼。這就要求設(shè)計時預(yù)留擴(kuò)展點,比如用接口、抽象類把可變部分隔離開。

里氏替換:子類應(yīng)該能替換父類,程序行為不變。如果正方形繼承自矩形,而矩形的寬高可以分別修改,正方形就做不到,這種繼承關(guān)系就有問題。

單一職責(zé):一個類只做一件事??搭惷湍懿鲁鏊墓δ?,如果描述不清或者有“和”字,很可能職責(zé)過多。拆開之后,每個模塊更清晰,改其中一個不影響其他。

不要重復(fù)自己:同樣的邏輯只寫一次。重復(fù)不僅浪費,更是隱患——改一個地方忘了改其他地方,bug就來了。抽取公共方法、用模板方法、繼承、組合,都是消除重復(fù)的手段。

三、設(shè)計模式:常見場景的解法

適配器模式:當(dāng)系統(tǒng)需要對接一個外部接口,而接口的格式、調(diào)用方式與內(nèi)部不一致時,加一層適配器做轉(zhuǎn)換。比如對接第三方支付接口,每家參數(shù)不同,適配器封裝差異,業(yè)務(wù)層只調(diào)用統(tǒng)一方法。

策略模式:一個功能有多種算法,需要動態(tài)選擇。比如工資發(fā)放,正式員工、兼職員工、外包員工的計薪方式不同。策略模式把算法封裝成獨立的類,運行時切換,避免if-else堆砌。

工廠模式:當(dāng)對象的創(chuàng)建過程復(fù)雜、或者需要根據(jù)配置選擇不同實現(xiàn)時,用工廠來創(chuàng)建。簡單工廠、工廠方法、抽象工廠,本質(zhì)都是把“怎么創(chuàng)建”和“誰來使用”分開。

單例模式:一個類只需要一個實例,比如配置管理、線程池。實現(xiàn)時注意線程安全,懶加載還是餓漢,取決于場景。但單例容易隱藏耦合,用多了會讓代碼之間偷偷依賴,反而破壞設(shè)計。

模板方法模式:父類定義算法骨架,子類實現(xiàn)具體步驟。比如數(shù)據(jù)導(dǎo)出,流程是:查數(shù)據(jù)、轉(zhuǎn)格式、寫文件。父類寫好流程,子類實現(xiàn)“怎么查”“轉(zhuǎn)成什么格式”,既復(fù)用代碼又留出變化點。

裝飾者模式:不修改原類,動態(tài)給對象添加功能。比如數(shù)據(jù)源讀寫,業(yè)務(wù)增長后需要加緩存、加日志、加讀寫分離。裝飾者一層層包上去,每個功能獨立,需要哪些組合哪些。

四、重構(gòu):讓代碼慢慢變好

軟件退化是常態(tài)。需求不斷加,改的人換了一茬又一茬,代碼慢慢就亂了。重構(gòu)不是推翻重來,是小步快跑,每次改一點,始終讓系統(tǒng)處于可運行狀態(tài)。

常用的重構(gòu)手法:抽方法解決大函數(shù),抽類解決大對象,抽父類提高復(fù)用,用設(shè)計模式降低耦合,建立分層結(jié)構(gòu)。關(guān)鍵是每一步都要驗證,不能積累到受不了再動手。

五、小步快跑:降低風(fēng)險的方式

很多項目不敢改設(shè)計,是因為擔(dān)心改壞了。小步快跑的思路是:每次只做一小步,每一步都有明確的目標(biāo)和驗證方法,確保當(dāng)前版本比上一版本更好。

比如加一個新需求,先寫測試,再改代碼;或者先重構(gòu)讓代碼易于擴(kuò)展,再寫新功能。兩種做法交替,既能推進(jìn)功能,又能改善結(jié)構(gòu)。這和先設(shè)計后編碼并不矛盾,只是把設(shè)計分成了多次迭代。

六、防止軟件退化的幾個習(xí)慣

一是寫清楚注釋,不僅寫“做了什么”,更要寫“為什么這么做”。二是保持代碼整潔,發(fā)現(xiàn)“壞味道”就順手改一下,不要等到積重難返。三是團(tuán)隊統(tǒng)一編碼規(guī)范,減少理解成本。四是定期進(jìn)行代碼評審,不僅找bug,也看設(shè)計是否合理。

軟件設(shè)計不是一次性的藝術(shù),而是持續(xù)演進(jìn)的過程。工程師高培認(rèn)為設(shè)計模式是工具箱里的工具,原則是選工具的準(zhǔn)則,重構(gòu)是保持工具箱整潔的方法。三者結(jié)合,才能讓代碼在變化中保持優(yōu)雅。

wKgZPGnCCCyAUkEDAAF3YCkztlU630.png

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4973

    瀏覽量

    74144
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    新能源充電樁4G插卡模塊怎么選?認(rèn)準(zhǔn)這幾點不踩坑

    隨著新能源汽車普及,充電樁部署范圍不斷擴(kuò)大,4G插卡模塊(工業(yè)4G路由器)作為充電樁聯(lián)網(wǎng)核心,直接決定設(shè)備穩(wěn)定性、運維效率和用戶體驗,選型不當(dāng)易出現(xiàn)斷網(wǎng)、數(shù)據(jù)丟失、運維繁瑣等問題,掌握這幾個核心
    的頭像 發(fā)表于 03-11 14:01 ?82次閱讀
    新能源充電樁4G插卡模塊怎么選?認(rèn)準(zhǔn)<b class='flag-5'>這幾點</b>不踩坑

    蘋果原裝無線充電器發(fā)熱怎么回事

    你的iPhone在無線充電板上“暖手”,是不是總讓你心里一緊,擔(dān)心電池健康或安全問題?先別急著焦慮,這種輕度至中度的發(fā)熱,其實是無線充電技術(shù)原理下的“正?,F(xiàn)象”。
    的頭像 發(fā)表于 02-09 08:15 ?519次閱讀
    蘋果原裝無線充電器發(fā)熱怎么回事

    【正點原子STM32N647開發(fā)板試用】--手寫識別

    本篇講述觸摸屏手寫識別數(shù)字及大小寫字母。一.實現(xiàn)原理 觸摸顯示屏在有觸摸時顯示并記錄觸摸軌跡,觸摸松開后,進(jìn)行手寫識別。 二.代碼準(zhǔn)備 1.屏顯功能 RGB屏顯示功能資源文件在Drivers
    發(fā)表于 02-01 18:26

    如何選擇靠譜的在線式充電機(jī)?廣州郵科這幾點值得關(guān)注!

    各位機(jī)房運維的朋友,是不是經(jīng)常為蓄電池維護(hù)發(fā)愁?每次都要等到深夜斷電操作,既影響業(yè)務(wù)又折騰人。別急,今天咱們就來聊聊在線式充電機(jī)這個"運維神器",并以行業(yè)老牌廣州郵科的產(chǎn)品為例,說說選購時需要注意哪些要點。
    的頭像 發(fā)表于 11-11 10:16 ?235次閱讀
    如何選擇靠譜的在線式充電機(jī)?廣州郵科<b class='flag-5'>這幾點</b>值得關(guān)注!

    用過天碩工業(yè)級SSD固態(tài)硬盤后,這幾點讓我很安心

    以下幾點讓我安心。 1. 寬溫適應(yīng)性出色 G40支持-40℃至85℃寬溫工作,設(shè)備在零下40℃的極寒環(huán)境下也能順利冷啟動,夏季高溫時長時間運行也沒有降速或死機(jī)。 2. 性能穩(wěn)定 G40順序讀取速度達(dá)3600MB/s,寫入速度2600MB/s,支持4TB容量,即便是高頻讀寫環(huán)境,
    的頭像 發(fā)表于 07-09 17:53 ?848次閱讀

    基于LockAI視覺識別模塊:手寫數(shù)字識別

    手寫數(shù)字識別是一種經(jīng)典的模式識別和圖像處理問題,旨在通過計算機(jī)自動識別用戶手寫的數(shù)字。 本文將教會你如何使用基于RV1106的 LockAI視覺識別模塊進(jìn)行手寫數(shù)字識別。 源代碼:ht
    發(fā)表于 06-30 16:45

    基于LockAI視覺識別模塊:手寫數(shù)字識別

    手寫數(shù)字識別是一種經(jīng)典的模式識別和圖像處理問題,旨在通過計算機(jī)自動識別用戶手寫的數(shù)字。本文將教會你如何使用基于RV1106的LockAI視覺識別模塊進(jìn)行手寫數(shù)字識別。
    的頭像 發(fā)表于 06-30 15:44 ?1175次閱讀
    基于LockAI視覺識別模塊:<b class='flag-5'>手寫</b>數(shù)字識別

    【高云GW5AT-LV60 開發(fā)套件試用體驗】基于開發(fā)板進(jìn)行深度學(xué)習(xí)實踐,并盡量實現(xiàn)皮膚病理圖片的識別

    一些,還容易轉(zhuǎn)換為verilog在fpga上面實現(xiàn),后者也試了一下,但是還沒有轉(zhuǎn)換為verilog代碼。不過聽說有個工具HLS,最近也沒怎么用過,后面有時間的話再折騰。 先上相關(guān)的python代碼
    發(fā)表于 06-11 22:35

    【經(jīng)驗分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到代碼解析

    FPGA開發(fā),思路先行!玩FPGA板子,讀代碼是基本功!尤其對從C語言轉(zhuǎn)戰(zhàn)FPGA的“寶貝們”來說,適應(yīng)流水線(pipeline)編程可能需要點時間。上篇點燈代碼解讀了基礎(chǔ),而如果能親手寫出串口通訊
    的頭像 發(fā)表于 06-05 08:05 ?1148次閱讀
    【經(jīng)驗分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到<b class='flag-5'>代碼</b>解析

    FS2601手寫擦寫板集成IC中文手冊

    電子發(fā)燒友網(wǎng)站提供《FS2601手寫擦寫板集成IC中文手冊.pdf》資料免費下載
    發(fā)表于 05-30 15:35 ?0次下載

    家具別急著換新!如何使用樹莓派讓我的“傻瓜”設(shè)備變得更智能!

    在花大價錢購買新的智能家居設(shè)備之前,我考慮給家中已有的幾臺設(shè)備第二次機(jī)會。通常被視為“傻瓜”設(shè)備的燈具、電視、空調(diào)、水壺或充電器,都需要手動開啟。為了讓這些“傻瓜”設(shè)備變得智能,并與智能家居中心進(jìn)行通信,我選擇了HomeAssistant作為解決方案,同時還為智能家居項目配備了一些配件。此外,我不想拆開這些電子設(shè)備并在里面焊接芯片來讓它們變得智能。相反,我選
    的頭像 發(fā)表于 05-28 16:33 ?829次閱讀
    家具<b class='flag-5'>別急著</b>換新!如何使用樹莓派讓我的“傻瓜”設(shè)備變得更智能!

    如何使用自定義設(shè)置調(diào)函數(shù)?

    你好,我正在嘗試編寫自己的自定義設(shè)置調(diào)函數(shù),并使用 fastEnum=false。 是否有任何代碼示例或資料可供我參考? void CyU3PUsbRegisterSetupCallback
    發(fā)表于 05-21 06:11

    答疑 | 3D打印的模型能當(dāng)日常餐具使用嗎?這安全嗎?

    有些愛好3D打印的朋友好奇地咨詢過一個問題:3D打印的餐具能拿來裝水吃飯嗎?會不會有毒?。窟@安全嗎? JLC3D小編直接敲黑板:別急著用!材料和工藝搞不對,真的不行!不行! 目前市面常見3D打印材料
    發(fā)表于 05-20 11:43

    液晶手寫板像素缺陷修復(fù)及相關(guān)液晶線路激光修復(fù)

    引言 液晶手寫板憑借便捷書寫、環(huán)保節(jié)能等優(yōu)勢廣泛應(yīng)用于教育、辦公等領(lǐng)域,然而像素缺陷會嚴(yán)重影響書寫流暢度與顯示清晰度。研究像素缺陷修復(fù)及相關(guān)液晶線路激光修復(fù)技術(shù),對提升液晶手寫板性能與用戶
    的頭像 發(fā)表于 05-19 09:36 ?1156次閱讀
    液晶<b class='flag-5'>手寫</b>板像素缺陷修復(fù)及相關(guān)液晶線路激光修復(fù)

    10分鐘上手寫代碼,LuatOS協(xié)程輕松掌握!

    10分鐘學(xué)會LuatOS協(xié)程,從此你的程序也能像通勤族利用碎片時間一樣游刃有余?,F(xiàn)在就去動手試一試,開啟異步編程新體驗! 寫給第一次聽說協(xié)程的你?: 別怕!協(xié)程不是復(fù)雜概念,看完這篇,10分鐘就能上手寫
    的頭像 發(fā)表于 04-10 15:18 ?699次閱讀
    10分鐘上<b class='flag-5'>手寫</b><b class='flag-5'>代碼</b>,LuatOS協(xié)程輕松掌握!