哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

別急著動(dòng)手寫(xiě)代碼:先想清楚這幾點(diǎn),后面少改八百回

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

單一職責(zé):一個(gè)類(lèi)只做一件事。看類(lèi)名就能猜出它的功能,如果描述不清或者有“和”字,很可能職責(zé)過(guò)多。拆開(kāi)之后,每個(gè)模塊更清晰,改其中一個(gè)不影響其他。

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

三、設(shè)計(jì)模式:常見(jiàn)場(chǎng)景的解法

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

策略模式:一個(gè)功能有多種算法,需要?jiǎng)討B(tài)選擇。比如工資發(fā)放,正式員工、兼職員工、外包員工的計(jì)薪方式不同。策略模式把算法封裝成獨(dú)立的類(lèi),運(yùn)行時(shí)切換,避免if-else堆砌。

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

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

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

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

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

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

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

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

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

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

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

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

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

wKgZPGnCCCyAUkEDAAF3YCkztlU630.png

審核編輯 黃宇

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

    關(guān)注

    30

    文章

    4975

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    蘋(píng)果原裝無(wú)線充電器發(fā)熱怎么回事

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

    【正點(diǎn)原子STM32N647開(kāi)發(fā)板試用】--手寫(xiě)識(shí)別

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

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

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

    用過(guò)天碩工業(yè)級(jí)SSD固態(tài)硬盤(pán)后,這幾點(diǎn)讓我很安心

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

    基于LockAI視覺(jué)識(shí)別模塊:手寫(xiě)數(shù)字識(shí)別

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

    基于LockAI視覺(jué)識(shí)別模塊:手寫(xiě)數(shù)字識(shí)別

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

    stm32N657上部署cubeAI生成代碼,編譯出錯(cuò)的原因?怎么解決?

    你好,要怎么在stm32N657上部署cubeAI生成代碼呢,編譯出錯(cuò),我使用cubeAI生成的手寫(xiě)數(shù)字模型的代碼,編譯報(bào)錯(cuò) 要怎么配置呢,我看其他AI demo都是分了兩個(gè)文件,這里要怎么燒錄進(jìn)去使用呢?
    發(fā)表于 06-20 06:31

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

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

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

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

    FS2601手寫(xiě)擦寫(xiě)板集成IC中文手冊(cè)

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

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

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

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

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

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

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

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

    引言 液晶手寫(xiě)板憑借便捷書(shū)寫(xiě)、環(huán)保節(jié)能等優(yōu)勢(shì)廣泛應(yīng)用于教育、辦公等領(lǐng)域,然而像素缺陷會(huì)嚴(yán)重影響書(shū)寫(xiě)流暢度與顯示清晰度。研究像素缺陷修復(fù)及相關(guān)液晶線路激光修復(fù)技術(shù),對(duì)提升液晶手寫(xiě)板性能與用戶(hù)
    的頭像 發(fā)表于 05-19 09:36 ?1261次閱讀
    液晶<b class='flag-5'>手寫(xiě)</b>板像素缺陷修復(fù)及相關(guān)液晶線路激光修復(fù)
    枣阳市| 额敏县| 水富县| 青川县| 兴山县| 建昌县| 石泉县| 驻马店市| 利川市| 建平县| 三穗县| 乳山市| 房山区| 四会市| 隆化县| 勐海县| 通河县| 苍梧县| 大城县| 东平县| 普兰县| 壶关县| 常德市| 斗六市| 临泉县| 师宗县| 河东区| 兖州市| 陕西省| 黑龙江省| 英山县| 天水市| 榆社县| 临清市| 永兴县| 小金县| 锦屏县| 临潭县| 青铜峡市| 黔东| 泊头市|