成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

整潔又好看的代碼是什么?我們又該如何實(shí)現(xiàn)?

譯文
開發(fā)
最近,我們公司內(nèi)部一直在討論如何寫出整潔的代碼的相關(guān)研討會(huì),他們認(rèn)為一份整潔的代碼能為團(tuán)隊(duì)開發(fā),后期維護(hù),重構(gòu)奠定了良好的基礎(chǔ),其質(zhì)量也是可靠的。因此各小組以如何建立并監(jiān)督編碼標(biāo)準(zhǔn)展開了大量的討論。

【51CTO.com快譯】最近,我們公司內(nèi)部一直在討論如何寫出整潔的代碼的相關(guān)研討會(huì),他們認(rèn)為一份整潔的代碼能為團(tuán)隊(duì)開發(fā),后期維護(hù),重構(gòu)奠定了良好的基礎(chǔ),其質(zhì)量也是可靠的。因此各小組以如何建立并監(jiān)督編碼標(biāo)準(zhǔn)展開了大量的討論。雖然我同意這類作法確實(shí)有一定的作用,但我認(rèn)為整潔代碼最核心的關(guān)鍵并不是這個(gè)。因此,以下內(nèi)容是我個(gè)人對(duì)整潔代碼的理解與看法。

[[179055]]

(免責(zé)聲明:以下內(nèi)容并非我個(gè)人原創(chuàng)。這一切都來自眾多偉大程序員的指導(dǎo)思想。但我認(rèn)為,重要內(nèi)容值得一再強(qiáng)調(diào)。)

首先,我個(gè)人認(rèn)為整潔代碼這一說法并不準(zhǔn)確。這一術(shù)語很容易誤導(dǎo)大家以為僅僅是讓代碼看起來更加整潔就可以了,而這顯然是很膚淺的表面現(xiàn)象。相反,我認(rèn)為將它稱為“宜居型代碼”更為合適,正如Richard Gabriel所說:

[[179056]]

宜居型代碼是源代碼的一種特性,即允許程序員、編碼者、bug修復(fù)者以及其他人在***閱讀代碼的人能很清晰的明白這里在干什么,而不是隱澀難懂,并能很快的加以調(diào)整。

宜居型代碼會(huì)讓人有種賓至如歸的體驗(yàn),只有這樣,開發(fā)者才能在無需深入考量的前提下快速著手工作。

雖然良好的代碼格式,會(huì)使得我們閱讀更容易且查找更快速,但其本質(zhì)的宜居型是關(guān)鍵。在我看來,宜居型代碼是指代碼能隨著業(yè)務(wù)的需求任意改變的。因此,在小規(guī)模業(yè)務(wù)要求調(diào)整代碼時(shí)只需要投入低成本的代價(jià)就可實(shí)現(xiàn),而當(dāng)大規(guī)模業(yè)務(wù)要求調(diào)整代碼時(shí)只需要再投入較多的開發(fā)成本即可實(shí)現(xiàn)——因?yàn)樾滦枨笈c現(xiàn)有代碼庫不相契合,所以無法共享原有的代碼。

[[179057]]

考慮到這一定義,我認(rèn)為宜居型代碼的關(guān)鍵在于整體結(jié)構(gòu)。而只有頂層設(shè)計(jì)(架構(gòu))能夠?qū)⒁司有偷奶匦宰優(yōu)楝F(xiàn)實(shí)。而***實(shí)現(xiàn)途徑包括以下幾項(xiàng):

  • 應(yīng)用程序要被劃分為多個(gè)(不應(yīng)過多)模塊。
  • 每個(gè)模塊代表著其領(lǐng)域里的一個(gè)特定意義, 其命名要一目了然,且不存在歧義,并要確保***閱讀代碼的人能快速了解其作用。
  • 各模塊要擁有一個(gè)經(jīng)過良好定義的接口,同樣要有一個(gè)特定且唯一的名字來命名。
  • 每個(gè)模塊的生命周期和各個(gè)模塊之間的關(guān)系是以聲明方式在應(yīng)用程序的入口點(diǎn)中表示。具體來講,應(yīng)用入口點(diǎn)必須明確聲明這些模塊是以何種方式來對(duì)接的,并要提供必要的業(yè)務(wù)價(jià)值。
  • 各模塊間的共生性要在各層級(jí)代碼得到明確表達(dá)。

(這部分內(nèi)容其實(shí)就是對(duì)結(jié)構(gòu)化程序設(shè)計(jì)方法的再次重申。正如之前提到,我并沒有創(chuàng)造任何新鮮概念。)

在我看來,這些模塊屬于形式與功能的組合——命名是區(qū)分應(yīng)用區(qū),而行為是描述業(yè)務(wù)。不同模塊間的關(guān)系應(yīng)當(dāng)?shù)玫铰暶鳎也淮嬖谌魏坞[藏或任何歧義,直接了當(dāng)表明關(guān)系。

我還認(rèn)為,這一定義同樣適用于遞歸。著眼于任何***模塊,其中每個(gè)模塊都應(yīng)與整體應(yīng)用顯示出同樣的特性:

  • 拆分為多個(gè)(不能太多)子模塊。
  • 每個(gè)子模塊要擁有一個(gè)經(jīng)過良好定義的接口。
  • 各子模塊的關(guān)系與生命周期應(yīng)在該模塊的入口點(diǎn)中聲明。
  • 各子模塊間的共生性應(yīng)在代碼中得到明確表達(dá)。

[[179058]]

這些嵌套模塊可以作為應(yīng)用、微服務(wù)、軟件包、命名空間、綁定上下文、聚合、模塊、對(duì)象乃至功能形式存在——這一切皆可被視為“封裝單元”或者“對(duì)象”。

  • 這一原則與Page-Jones重構(gòu)算法能夠相互印證:

  • 將應(yīng)用劃分為多個(gè)(不能太多)模塊。

  • 移除各模塊間的全部高階共生性。

  • 遞歸直至無意義。

任何模塊的拆分其子模塊都能代表著另一組實(shí)現(xiàn)。并且我希望能夠?qū)⒏鱾€(gè)模塊作為一個(gè)黑匣子看待,且能在無沖突前提下對(duì)黑匣子邊界進(jìn)行重構(gòu)。這需要該模塊的接口有個(gè)一良好定義(例如通過自動(dòng)化測(cè)試實(shí)現(xiàn)),且各模塊間及子模塊間的共生性明確且可理解。

在我看來,隨著層級(jí)降低,利用這一算法的價(jià)值也將隨之降低。換言之,明確頂層模塊的關(guān)系,其價(jià)值要高于明確底層子模塊間的關(guān)系。這樣的應(yīng)用更易于變更,特別是考慮到頂層代碼要采取簡(jiǎn)單的表達(dá)方式。雖然整潔的低級(jí)別模塊同樣能帶來好處,但實(shí)現(xiàn)應(yīng)用宜居型的整體收益相對(duì)較低。

作為實(shí)現(xiàn)手段之一,我認(rèn)為面向消息型編程能夠在各類規(guī)模下能達(dá)到良好的收效。我之所以將應(yīng)用劃分成多個(gè)模塊,單純是為了讓各模塊間的通信變得簡(jiǎn)單且意義明確。模塊的存在只是為了隱藏消息以及層的變更是如何實(shí)際“生效”的。Michael Feathers提出的Naked CRC技術(shù)同樣能夠很好地實(shí)現(xiàn)宜局型模塊的通信。

遺憾的是,我所見過的大部分代碼庫都粗暴地違反了以上各種實(shí)現(xiàn)模式。其通常包含著數(shù)百個(gè)毫無結(jié)構(gòu)性可言的類,這些類全部存在于同一抽象及可訪問層內(nèi)。這樣的代碼庫絕無宜人性可言,且很難向其中添加新的類或者概括其中現(xiàn)有類的作用。這類應(yīng)用同樣難于重構(gòu),因?yàn)榇蠖鄶?shù)“單元測(cè)試”機(jī)制著眼于實(shí)現(xiàn)選擇的而非業(yè)務(wù)要求。而且由于不具備頂層封裝的單元,因此我們很難理解其整體設(shè)計(jì)思路。

原文標(biāo)題:What Is Clean Code?

原文作者:Kevin Rutherford

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:陶家龍 來源: 51CTO
相關(guān)推薦

2011-07-27 10:30:21

活動(dòng)目錄

2017-12-10 23:41:52

SIEM企業(yè)安全情報(bào)

2021-08-13 11:39:08

容器阿里云Kubernetes

2023-05-26 18:54:02

開源博客系統(tǒng)

2025-06-27 06:38:19

2018-05-14 11:28:19

2012-08-01 09:38:17

代碼整潔

2009-12-29 10:20:17

2023-03-29 08:26:06

2013-02-20 09:44:21

GoogleGoogle GlasGoogle眼鏡

2021-03-04 17:21:49

內(nèi)存檢測(cè)泄漏

2024-07-12 09:01:37

404頁面代碼

2021-01-06 14:42:09

前端Typescript代碼

2012-08-01 09:23:31

代碼

2021-12-27 07:59:11

Web3區(qū)塊鏈協(xié)議

2021-04-29 21:54:44

Python代碼語言

2018-03-30 09:00:00

LinuxUbuntu清理方法

2017-05-31 15:47:27

AI人工智能機(jī)器學(xué)習(xí)

2018-06-08 10:54:26

2018-08-15 14:02:19

ODCCIT領(lǐng)域液冷
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产免费看 | 亚洲视频中文字幕 | 久久久久久久综合 | 欧美精品一区二区三区在线播放 | 欧美美女爱爱视频 | 国产精品国产三级国产aⅴ中文 | 欧美一区二区三区在线观看 | 蜜桃传媒av| 欧美一二三区 | 精品av| 成人久久久久久久久 | 日韩在线国产 | 一区欧美 | 久久在线免费 | 蜜桃视频成人 | 亚洲视频中文字幕 | 亚洲 欧美 综合 | 国产精品日日做人人爱 | 欧美精品日韩精品国产精品 | 国产一区二区精品自拍 | 国产精品久久久久久久久久 | 毛片一区二区三区 | 欧美日韩在线免费观看 | 色婷婷久久久亚洲一区二区三区 | 日韩av一二三区 | 亚洲免费在线观看 | 一区二区高清 | 成年视频在线观看福利资源 | 免费高潮视频95在线观看网站 | 夜久久 | 欧美白人做受xxxx视频 | 99精品一级欧美片免费播放 | 天天操天天干天天透 | 男女羞羞视频在线观看 | 国产激情网 | 久久久久网站 | 亚洲视频免费在线 | www.欧美| 91精品国产91久久久久久不卞 | 欧美国产一区二区 | 久久精品国产一区二区三区不卡 |