伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

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

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

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

代碼整潔之道-大師眼中的整潔代碼是什么樣

京東云 ? 來(lái)源:jf_75140285 ? 作者:jf_75140285 ? 2024-09-09 16:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

幾個(gè)月前寫(xiě)了一篇文章“如何寫(xiě)出難以維護(hù)的代碼”,從中能大概了解到不好維護(hù)的代碼是什么樣,有哪些壞味道,那肯定有人會(huì)反問(wèn),難以維護(hù)的代碼見(jiàn)的太多了,也知道長(zhǎng)什么樣,但是對(duì)于好維護(hù)的代碼是什么樣的比較模糊,帶著這個(gè)問(wèn)題,本人讀完了世界軟件開(kāi)發(fā)大師馬丁的《代碼整潔之道》這本書(shū),來(lái)了解下大師眼中的整潔代碼畫(huà)像是什么樣的,相信能給你帶來(lái)不一樣的理解和感悟。

wKgZombesjCAGIWdAAHN7xWKtsQ450.png

關(guān)于整潔代碼,沒(méi)有明確的定義,有多少程序員就有多少種定義。下面先看下幾位大師是如何定義的。

C++語(yǔ)言發(fā)明者Bjarne Stroustrup提到:

代碼應(yīng)該優(yōu)雅高效,代碼邏輯應(yīng)該直截了當(dāng),讓缺陷難以隱藏,盡量減少依賴關(guān)系,便于維護(hù);按照某種分層策略完善錯(cuò)誤處理,性能調(diào)到最優(yōu),不會(huì)讓別人修改的更混亂;整潔的代碼只做一件事。

?

《面向?qū)ο蠓治雠c設(shè)計(jì)》一書(shū)作者Grad Booch提到:

整潔的代碼簡(jiǎn)單直接,如同散文一樣優(yōu)美,從不隱藏設(shè)計(jì)者的意圖,代碼抽象干凈利落,控制語(yǔ)句直截了當(dāng)。

?

Eclipse戰(zhàn)略教父Dave Thomas這么定義:

整潔的代碼應(yīng)可由其他開(kāi)發(fā)者閱讀和增補(bǔ),應(yīng)當(dāng)有單元測(cè)試和驗(yàn)收測(cè)試,使用有意義的命名,只提供一種而非多種做一件事的途徑,只有盡量少的依賴關(guān)系,而且要明確地定義和提供清晰、盡量少的API。

?

《修改代碼的藝術(shù)》一書(shū)作者M(jìn)ichael Feathers定義:

整潔代碼應(yīng)該是特別在意代碼的人才能寫(xiě)出來(lái)的,幾乎沒(méi)有改進(jìn)的余地,作者各種情況都想到了,如果你想改進(jìn)它,總會(huì)回到原點(diǎn),總會(huì)贊嘆寫(xiě)代碼的人的專心和認(rèn)真。

?

《極限編程實(shí)施》作者Ron Jeffries提出整潔代碼:

能通過(guò)所有測(cè)試,沒(méi)有重復(fù)代碼,代碼能體現(xiàn)設(shè)計(jì)理念,盡量減少類,方法以及函數(shù)。

?

綜合以上幾位大師對(duì)整潔代碼的定義闡述,可以歸納總結(jié)一下整潔代碼的畫(huà)像:

1.體現(xiàn)設(shè)計(jì)理念,這個(gè)整潔代碼特性在以上大師的定義里面多次提到了,Grady提到整潔代碼不會(huì)隱藏設(shè)計(jì)意圖,Ron提到整潔代碼一看就知道采用了什么樣的設(shè)計(jì)理念。體現(xiàn)設(shè)計(jì)理念看上去有點(diǎn)虛,但是實(shí)際上我認(rèn)為是最重要的一點(diǎn),所謂代碼即設(shè)計(jì),只要能回答代碼為什么這么寫(xiě),就說(shuō)明你的代碼有設(shè)計(jì)思想在里面,即便一行代碼都能體現(xiàn)出設(shè)計(jì)理念,比如一個(gè)有意義的命名也是設(shè)計(jì)的一種表現(xiàn)。

2.沒(méi)有重復(fù)代碼,如果你兩處代碼相同或者大部分重復(fù),說(shuō)明代碼不夠整潔,同時(shí)說(shuō)明代碼沒(méi)有去做好設(shè)計(jì)。消除重復(fù)代碼意味著減少類和方法以及相關(guān)API。

3.代碼只做一件事,很多代碼由于想做太多事,目的不明確,意圖混亂,結(jié)果代碼變得很糟糕,代碼只做一件事,也稱單一職責(zé),這個(gè)幾乎是很多軟件設(shè)計(jì)里面經(jīng)常提到的一個(gè)警句,這個(gè)原則看似很簡(jiǎn)單,但是實(shí)際上執(zhí)行起來(lái)不是那么簡(jiǎn)單,或者說(shuō),一時(shí)堅(jiān)持這個(gè)原則很容易,難的是一直堅(jiān)持這個(gè)原則,如果始終能踐行這個(gè)原則,代碼整潔度能達(dá)到質(zhì)的飛躍。

4.代碼好閱讀,關(guān)于閱讀,Bjarne用“優(yōu)雅”來(lái)形容,優(yōu)雅意味著優(yōu)美雅致,所以在他看來(lái),代碼應(yīng)該優(yōu)美,給人以愉悅感,Grad也提到代碼應(yīng)該像散文一樣優(yōu)美,讓閱讀的人看完一段想看下一段,能很明顯的展現(xiàn)出解決問(wèn)題的表達(dá)力和張力,閱讀者會(huì)不停的發(fā)出“啊哈,應(yīng)該這樣來(lái)處理!”的感嘆。反之,如果代碼不好閱讀,閱讀者看完后還需要猜測(cè)所表達(dá)的意思,對(duì)所實(shí)現(xiàn)的功能持懷疑態(tài)度,甚至有心驚膽戰(zhàn)的心理,會(huì)在心里不停的反問(wèn):"不會(huì)吧,這都可以在線上運(yùn)行?”我們?cè)谛薷拇a或?qū)懶麓a之前都要閱讀周邊代碼,如果閱讀代碼很難,則寫(xiě)代碼也會(huì)很難,據(jù)統(tǒng)計(jì)讀代碼和寫(xiě)代碼時(shí)間比例是10:1,編寫(xiě)代碼的難度,取決于讀周邊代碼的難度。要想干得快,要想早點(diǎn)做完,要想輕松寫(xiě)代碼,先讓代碼易讀吧。

5.代碼好修改,Dave提到整潔代碼應(yīng)該可以讓其他開(kāi)發(fā)者進(jìn)行增補(bǔ),也就是很容易進(jìn)行功能的增加,畢竟很多系統(tǒng)代碼都要不停的迭代更新,需要基于原代碼進(jìn)行增補(bǔ),所以代碼的易修改就顯得格外的重要,試想如果一個(gè)開(kāi)發(fā)者寫(xiě)的代碼別人沒(méi)法修改或者不敢改,那你說(shuō)這隱患有多大。我們經(jīng)常嘴巴提到的系統(tǒng)可維護(hù)性,實(shí)際上說(shuō)的更具體點(diǎn),更多的指的是代碼的可修改方面。

?

將以上5點(diǎn)整潔代碼的畫(huà)像總結(jié)一句話:

?

?

體現(xiàn)設(shè)計(jì)理念,代碼不重復(fù),只做一件事,好閱讀和修改!

審核編輯 黃宇

聲明:本文內(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)投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2439

    瀏覽量

    66945
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4974

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    SonarQube代碼質(zhì)量管理平臺(tái)詳解

    代碼質(zhì)量問(wèn)題是技術(shù)債務(wù)的主要來(lái)源。一個(gè)未被發(fā)現(xiàn)的空指針異??赡茉谏a(chǎn)環(huán)境導(dǎo)致服務(wù)崩潰,一段存在SQL注入漏洞的代碼可能讓整個(gè)數(shù)據(jù)庫(kù)暴露在攻擊者面前。傳統(tǒng)的Code Review依賴人工審查,效率低下且容易遺漏。
    的頭像 發(fā)表于 03-11 09:40 ?360次閱讀

    分析嵌入式軟件代碼的漏洞-代碼注入

    進(jìn)行編譯 在大多數(shù)情況下,程序故意像執(zhí)行代碼執(zhí)行數(shù)據(jù)是不尋常的,但將數(shù)據(jù)用于構(gòu)造有意執(zhí)行的對(duì)象卻很常見(jiàn)。 1、格式化字符串漏洞 大多數(shù)C程序員熟悉printf函數(shù)。大體上,這些格式字符串
    發(fā)表于 12-22 12:53

    HarmonyOS應(yīng)用代碼混淆技術(shù)方案

    代碼混淆技術(shù)可以增加代碼的復(fù)雜性和模糊性,從而提高攻擊者分析代碼的難度。
    的頭像 發(fā)表于 11-21 16:17 ?5671次閱讀
    HarmonyOS應(yīng)用<b class='flag-5'>代碼</b>混淆技術(shù)方案

    TE Connectivity推出全新雙槽SIAMEZE端子

    在閥門產(chǎn)品迭代中,電磁閥正面臨空間極限與布線整潔的雙重挑戰(zhàn)。
    的頭像 發(fā)表于 11-17 16:14 ?1025次閱讀

    在極海APM32系列MCU中如何把代碼重定位到SDRAM運(yùn)行

    在有些情況下,我們想要把代碼放到SDRAM運(yùn)行。下面介紹在APM32的MCU中,如何把代碼重定位到SDRAM運(yùn)行。對(duì)于不同APM32系列的MCU,方法都是一的。
    的頭像 發(fā)表于 11-04 09:14 ?5312次閱讀
    在極海APM32系列MCU中如何把<b class='flag-5'>代碼</b>重定位到SDRAM運(yùn)行

    代碼開(kāi)發(fā)平臺(tái)推薦:2025國(guó)內(nèi)低代碼開(kāi)發(fā)平臺(tái)排名TOP10

    代碼開(kāi)發(fā)平臺(tái)排行榜 在企業(yè)數(shù)字化轉(zhuǎn)型的浪潮中,低代碼開(kāi)發(fā)平臺(tái)正逐漸成為企業(yè)實(shí)現(xiàn)高效開(kāi)發(fā)和快速迭代的重要工具。隨著技術(shù)的不斷進(jìn)步和市場(chǎng)需求的持續(xù)增長(zhǎng),低代碼開(kāi)發(fā)平臺(tái)的市場(chǎng)競(jìng)爭(zhēng)也日益激烈。以下
    的頭像 發(fā)表于 10-28 10:22 ?871次閱讀

    2025主流低代碼平臺(tái)有哪些:低代碼開(kāi)發(fā)平臺(tái)選型指南指南

    在企業(yè)數(shù)字化轉(zhuǎn)型進(jìn)入深水區(qū)的當(dāng)下,低代碼開(kāi)發(fā)平臺(tái)已從早期的“效率工具”升級(jí)為“核心基建”。其工程化能力、流程適配深度、技術(shù)延展性與行業(yè)積淀,直接決定了企業(yè)轉(zhuǎn)型的成效。據(jù)Gartner預(yù)測(cè),到2026
    的頭像 發(fā)表于 10-22 11:49 ?474次閱讀

    外殼防護(hù)等級(jí)(IP代碼)全解讀

    什么是外殼防護(hù)等級(jí)(IP代碼)IP代碼,全稱為“國(guó)際防護(hù)等級(jí)”,是由國(guó)際電工委員會(huì)制定的全球通用標(biāo)準(zhǔn)。這一標(biāo)準(zhǔn)旨在為電子設(shè)備外殼的防護(hù)能力提供一個(gè)清晰、統(tǒng)一的評(píng)判體系。簡(jiǎn)單來(lái)說(shuō),IP代碼就是電子設(shè)備
    的頭像 發(fā)表于 10-14 12:13 ?1396次閱讀
    外殼防護(hù)等級(jí)(IP<b class='flag-5'>代碼</b>)全解讀

    代碼格式化工具Clang-Format提升你的CW32工程質(zhì)量

    它能自動(dòng)統(tǒng)一團(tuán)隊(duì)代碼風(fēng)格,讓不同開(kāi)發(fā)者寫(xiě)出的代碼如出一轍。就像 CW32 官方庫(kù)函數(shù)遵循統(tǒng)一規(guī)范一,Clang-Format 能讓團(tuán)隊(duì)所有成員的代碼瞬間保持一致,徹底消除 "tabs
    的頭像 發(fā)表于 10-09 17:43 ?1246次閱讀
    <b class='flag-5'>代碼</b>格式化工具Clang-Format提升你的CW32工程質(zhì)量

    智行者蝸小白重塑地鐵清潔新標(biāo)準(zhǔn)

    智行者無(wú)人駕駛清潔車蝸小白自今年5月在深圳地鐵“上崗”以來(lái),逐漸成為乘客眼中的“熟面孔”,并已高效服務(wù)于深圳地鐵2號(hào)線、8號(hào)線、10號(hào)線等6條線路共計(jì)30個(gè)核心站點(diǎn),用科技的力量守護(hù)這座城市窗口的整潔。
    的頭像 發(fā)表于 08-26 14:01 ?1100次閱讀

    Ansible代碼上線項(xiàng)目實(shí)戰(zhàn)案例

    在DevOps浪潮中,自動(dòng)化部署已經(jīng)成為每個(gè)運(yùn)維工程師的必備技能。今天我將分享一個(gè)完整的Ansible代碼上線項(xiàng)目實(shí)戰(zhàn)案例,讓你的部署效率提升10倍!
    的頭像 發(fā)表于 07-24 14:03 ?683次閱讀

    單模光纜型號(hào)字母代碼及其含義

    單模光纜的型號(hào)字母代碼主要用于標(biāo)識(shí)光纜的分類、結(jié)構(gòu)、護(hù)層及光纖類型等關(guān)鍵信息,以下是一些常見(jiàn)的單模光纜型號(hào)字母代碼及其含義: 一、光纜分類代碼 GY:通信用室外光纜,這是最常見(jiàn)的室外光纜分類
    的頭像 發(fā)表于 07-17 10:27 ?3435次閱讀

    企業(yè)和個(gè)人基于業(yè)務(wù)知識(shí)和代碼庫(kù)增強(qiáng)的大模型生成代碼實(shí)踐

    :“這個(gè)功能之前做過(guò)類似的,你參考下歷史代碼。”可當(dāng)他打開(kāi)代碼倉(cāng)庫(kù),卻發(fā)現(xiàn)注釋寥寥,變量名像密碼一難懂,更找不到任何需求文檔。他硬著頭皮修改,結(jié)果上線后引發(fā)了線上故障——原來(lái)有個(gè)隱藏的業(yè)務(wù)規(guī)則,只有老員工才知道。 第二周:
    的頭像 發(fā)表于 07-08 15:31 ?494次閱讀
    企業(yè)和個(gè)人基于業(yè)務(wù)知識(shí)和<b class='flag-5'>代碼</b>庫(kù)增強(qiáng)的大模型生成<b class='flag-5'>代碼</b>實(shí)踐

    OLED代碼分享

    OLED代碼
    發(fā)表于 04-29 17:04 ?1次下載

    變頻器相同的故障原因不同的故障代碼分類

    變頻器相同的故障原因可能對(duì)應(yīng)不同的故障代碼,這主要取決于變頻器的型號(hào)、制造商以及具體的故障檢測(cè)機(jī)制。以下是一些常見(jiàn)的故障原因及其可能對(duì)應(yīng)的不同故障代碼分類: 一、過(guò)電流故障 ● 故障原因:電動(dòng)機(jī)銘牌
    的頭像 發(fā)表于 04-25 14:31 ?3086次閱讀
    變頻器相同的故障原因不同的故障<b class='flag-5'>代碼</b>分類