<blockquote>分享下前 Google 工程師「王爭」對(duì)于這個(gè)話題的思考。</blockquote><p> </p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/28649924-5f2ad7807e4705b7.jpg" img-data="{"format":"jpeg","size":254392,"height":742,"width":1344}" style="min-height:200px;min-width:200px;" class="uploaded-img" width="auto" height="auto"/>
</div><p/><p>大家好,我是王爭。</p><p> </p><p>在我的工作經(jīng)歷中,每當(dāng)同事評(píng)論起項(xiàng)目代碼質(zhì)量的時(shí)候,聽到的最多的評(píng)語就是:“代碼寫得很爛”或者“代碼寫得很好”。用“好”“爛”這樣的字眼來描述,非常地籠統(tǒng)。當(dāng)我具體問到底如何爛、如何好的時(shí)候,盡管大部分同事都能簡單地羅列上幾個(gè)點(diǎn),但往往都不夠全面、非常零碎,也切不中要害。</p><p> </p><p>當(dāng)然,也有一些工程師對(duì)如何評(píng)價(jià)代碼質(zhì)量有所認(rèn)識(shí),比如,好代碼是易擴(kuò)展、易讀、簡單、易維護(hù)的等等,但他們對(duì)于這些評(píng)價(jià)的理解往往只停留在表面概念上,對(duì)于諸多更深入的問題,比如,“怎么才算可讀性好?什么樣的代碼才算易擴(kuò)展、易維護(hù)?可讀、可擴(kuò)展與可維護(hù)之間有什么關(guān)系?可維護(hù)中‘維護(hù)’兩字該如何理解?”等等,并沒有太清晰的認(rèn)識(shí)。</p><p> </p><p>對(duì)于程序員來說,辨別代碼寫得“好”還是“爛”,是一個(gè)非常重要的能力。這也是我們寫出好代碼的前提。畢竟,如果我們連什么是好代碼、什么是爛代碼,都分辨不清,又談何寫出好代碼呢?</p><p> </p><p>所以,今天我們就聊一聊關(guān)于代碼質(zhì)量評(píng)判的相關(guān)問題,希望你在學(xué)完今天的內(nèi)容之后,對(duì)代碼質(zhì)量的評(píng)判有個(gè)更加清晰、更加透徹的認(rèn)識(shí)和理解。</p><p> </p><h2>如何評(píng)價(jià)代碼質(zhì)量的高低?</h2><p> </p><p>實(shí)際上,咱們平時(shí)嘴中常說的“好”和“爛”,是對(duì)代碼質(zhì)量的一種描述?!昂谩被\統(tǒng)地表示代碼質(zhì)量高,“爛”籠統(tǒng)地表示代碼質(zhì)量低。對(duì)于代碼質(zhì)量的描述,除了“好”“爛”這樣比較簡單粗暴的描述方式之外,我們也經(jīng)常會(huì)聽到很多其他的描述方式。這些描述方法語義更豐富、更專業(yè)、更細(xì)化。我搜集整理了一下,羅列在了下面。這些幾乎涵蓋我們所能聽到的描述代碼質(zhì)量的所有常用詞匯,你可以看一看。</p><p> </p><blockquote>靈活性(flexibility)、可擴(kuò)展性(extensibility)、可維護(hù)性(maintainability)、可讀性(readability)、可理解性(understandability)、易修改性(changeability)、可復(fù)用(reusability)、可測試性(testability)、模塊化(modularity)、高內(nèi)聚低耦合(high cohesion loose coupling)、高效(high effciency)、高性能(high performance)、安全性(security)、兼容性(compatibility)、易用性(usability)、整潔(clean)、清晰(clarity)、簡單(simple)、直接(straightforward)、少即是多(less code is more)、文檔詳盡(well-documented)、分層清晰(well-layered)、正確性(correctness、bug free)、健壯性(robustness)、魯棒性(robustness)、可用性(reliability)、可伸縮性(scalability)、穩(wěn)定性(stability)、優(yōu)雅(elegant)、好(good)、壞(bad)…… </blockquote><p> </p><p>看到如此多的描述詞,你可能要問了,我們到底該用哪些詞來描述一段代碼的質(zhì)量呢?</p><p> </p><p>實(shí)際上,我們很難通過其中的某個(gè)或者某幾個(gè)詞匯來全面地評(píng)價(jià)代碼質(zhì)量。因?yàn)檫@些詞匯都是從不同維度來說的。這就好比,對(duì)于一個(gè)人的評(píng)價(jià),我們需要綜合各個(gè)方面來給出,比如性格、相貌、能力、財(cái)富等等。代碼質(zhì)量高低也是一個(gè)綜合各種因素得到的結(jié)論。我們并不能通過單一的維度去評(píng)價(jià)一段代碼寫的好壞。比如,即使一段代碼的可擴(kuò)展性很好,但可讀性很差,那我們也不能說這段代碼質(zhì)量高。</p><p> </p><p>除此之外,不同的評(píng)價(jià)維度也并不是完全獨(dú)立的,有些是具有包含關(guān)系、重疊關(guān)系或者可以互相影響的。比如,代碼的可讀性好、可擴(kuò)展性好,就意味著代碼的可維護(hù)性好。而且,各種評(píng)價(jià)維度也不是非黑即白的。比如,我們不能簡單地將代碼分為可讀與不可讀。如果用數(shù)字來量化代碼的可讀性的話,它應(yīng)該是一個(gè)連續(xù)的區(qū)間值,而非0、1這樣的離散值。</p><p> </p><p>不過,我們真的可以客觀地量化一段代碼質(zhì)量的高低嗎?答案是否定的。對(duì)一段代碼的質(zhì)量評(píng)價(jià),常常有很強(qiáng)的主觀性。比如,怎么樣的代碼才算可讀性好,每個(gè)人的評(píng)判標(biāo)準(zhǔn)都不大一樣。這就好比我們?nèi)ピu(píng)價(jià)一本小說寫得是否精彩,本身就是一個(gè)很難量化的、非常主觀的事情。</p><p> </p><p>正是因?yàn)榇a質(zhì)量評(píng)價(jià)的主觀性,使得這種主觀評(píng)價(jià)的準(zhǔn)確度,跟工程師自身經(jīng)驗(yàn)有極大的關(guān)系。越是有經(jīng)驗(yàn)的工程師,給出的評(píng)價(jià)也就越準(zhǔn)確。相反,資歷比較淺的工程師就常常會(huì)覺得,沒有一個(gè)可執(zhí)行的客觀的評(píng)價(jià)標(biāo)準(zhǔn)作為參考,很難準(zhǔn)確地判斷一段代碼寫得好與壞。有的時(shí)候,自己覺得代碼寫得已經(jīng)夠好了,但實(shí)際上并不是。所以,這也導(dǎo)致如果沒有人指導(dǎo)的話,自己一個(gè)人悶頭寫代碼,即便寫再多的代碼,代碼能力也可能一直沒有太大提高。</p><p> </p><h2>最常用的評(píng)價(jià)標(biāo)準(zhǔn)有哪幾個(gè)?</h2><p> </p><p>仔細(xì)看前面羅列的所有代碼質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn),你會(huì)發(fā)現(xiàn),有些詞語過于籠統(tǒng)、抽象,比較偏向?qū)τ谡w的描述,比如優(yōu)雅、好、壞、整潔、清晰等;有些過于細(xì)節(jié)、偏重方法論,比如模塊化、高內(nèi)聚低耦合、文檔詳盡、分層清晰等;有些可能并不僅僅局限于編碼,跟架構(gòu)設(shè)計(jì)等也有關(guān)系,比如可伸縮性、可用性、穩(wěn)定性等。</p><p> </p><p>為了做到有的放矢、有重點(diǎn)地學(xué)習(xí),我挑選了其中幾個(gè)最常用的、最重要的評(píng)價(jià)標(biāo)準(zhǔn),來詳細(xì)講解,其中就包括:可維護(hù)性、可讀性、可擴(kuò)展性、靈活性、簡潔性(簡單、復(fù)雜)、可復(fù)用性、可測試性。接下來,我們逐一講解一下。</p><p> </p><h3>1.可維護(hù)性(maintainability)</h3><p> </p><p>我們首先來看,什么是代碼的“可維護(hù)性”?所謂的“維護(hù)代碼”到底包含哪些具體工作?</p><p> </p><p>落實(shí)到編碼開發(fā),所謂的“維護(hù)”無外乎就是修改bug、修改老的代碼、添加新的代碼之類的工作。所謂“代碼易維護(hù)”就是指,在不破壞原有代碼設(shè)計(jì)、不引入新的bug的情況下,能夠快速地修改或者添加代碼。所謂“代碼不易維護(hù)”就是指,修改或者添加代碼需要冒著極大的引入新bug的風(fēng)險(xiǎn),并且需要花費(fèi)很長的時(shí)間才能完成。</p><p> </p><p>我們知道,對(duì)于一個(gè)項(xiàng)目來說,維護(hù)代碼的時(shí)間遠(yuǎn)遠(yuǎn)大于編寫代碼的時(shí)間。工程師大部分的時(shí)間可能都是花在修修bug、改改老的功能邏輯、添加一些新的功能邏輯之類的工作上。所以,代碼的可維護(hù)性就顯得格外重要。</p><p> </p><p>維護(hù)、易維護(hù)、不易維護(hù)這三個(gè)概念不難理解。不過,對(duì)于實(shí)際的軟件開發(fā)來說,更重要的是搞清楚,如何來判斷代碼可維護(hù)性的好壞。</p><p> </p><p>實(shí)際上,可維護(hù)性也是一個(gè)很難量化、偏向?qū)Υa整體的評(píng)價(jià)標(biāo)準(zhǔn),它有點(diǎn)類似之前提到的“好”“壞”“優(yōu)雅”之類的籠統(tǒng)評(píng)價(jià)。代碼的可維護(hù)性是由很多因素協(xié)同作用的結(jié)果。代碼的可讀性好、簡潔、可擴(kuò)展性好,就會(huì)使得代碼易維護(hù);相反,就會(huì)使得代碼不易維護(hù)。更細(xì)化地講,如果代碼分層清晰、模塊化好、高內(nèi)聚低耦合、遵從基于接口而非實(shí)現(xiàn)編程的設(shè)計(jì)原則等等,那就可能意味著代碼易維護(hù)。除此之外,代碼的易維護(hù)性還跟項(xiàng)目代碼量的多少、業(yè)務(wù)的復(fù)雜程度、利用到的技術(shù)的復(fù)雜程度、文檔是否全面、團(tuán)隊(duì)成員的開發(fā)水平等諸多因素有關(guān)。</p><p> </p><p>所以,從正面去分析一個(gè)代碼是否易維護(hù)稍微有點(diǎn)難度。不過,我們可以從側(cè)面上給出一個(gè)比較主觀但又比較準(zhǔn)確的感受。如果bug容易修復(fù),修改、添加功能能夠輕松完成,那我們就可以主觀地認(rèn)為代碼對(duì)我們來說易維護(hù)。相反,如果修改一個(gè)bug,修改、添加一個(gè)功能,需要花費(fèi)很長的時(shí)間,那我們就可以主觀地認(rèn)為代碼對(duì)我們來說不易維護(hù)。</p><p> </p><p>你可能會(huì)說,這樣的評(píng)價(jià)方式也太主觀了吧?沒錯(cuò),是否易維護(hù)本來就是針對(duì)維護(hù)的人來說的。不同水平的人對(duì)于同一份代碼的維護(hù)能力并不是相同的。對(duì)于同樣一個(gè)系統(tǒng),熟悉它的資深工程師會(huì)覺得代碼的可維護(hù)性還不錯(cuò),而一些新人因?yàn)椴皇煜ごa,修改bug、修改添加代碼要花費(fèi)很長的時(shí)間,就有可能會(huì)覺得代碼的可維護(hù)性不那么好。這實(shí)際上也印證了我們之前的觀點(diǎn):代碼質(zhì)量的評(píng)價(jià)有很強(qiáng)的主觀性。</p><p> </p><h3>2.可讀性(readability)</h3><p> </p><p>軟件設(shè)計(jì)大師Martin Fowler曾經(jīng)說過:“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”翻譯成中文就是:“任何傻瓜都會(huì)編寫計(jì)算機(jī)能理解的代碼。好的程序員能夠編寫人能夠理解的代碼?!?lt;/p><p> </p><p>Google內(nèi)部甚至專門有個(gè)認(rèn)證就叫作Readability。只有拿到這個(gè)認(rèn)證的工程師,才有資格在code review的時(shí)候,批準(zhǔn)別人提交代碼??梢姶a的可讀性有多重要,畢竟,代碼被閱讀的次數(shù)遠(yuǎn)遠(yuǎn)超過被編寫和執(zhí)行的次數(shù)。</p><p> </p><p>我個(gè)人認(rèn)為,代碼的可讀性應(yīng)該是評(píng)價(jià)代碼質(zhì)量最重要的指標(biāo)之一。我們?cè)诰帉懘a的時(shí)候,時(shí)刻要考慮到代碼是否易讀、易理解。除此之外,代碼的可讀性在非常大程度上會(huì)影響代碼的可維護(hù)性。畢竟,不管是修改bug,還是修改添加功能代碼,我們首先要做的事情就是讀懂代碼。代碼讀不大懂,就很有可能因?yàn)榭紤]不周全,而引入新的bug。</p><p> </p><p>既然可讀性如此重要,那我們又該如何評(píng)價(jià)一段代碼的可讀性呢?</p><p> </p><p>我們需要看代碼是否符合編碼規(guī)范、命名是否達(dá)意、注釋是否詳盡、函數(shù)是否長短合適、模塊劃分是否清晰、是否符合高內(nèi)聚低耦合等等。你應(yīng)該也能感覺到,從正面上,我們很難給出一個(gè)覆蓋所有評(píng)價(jià)指標(biāo)的列表。這也是我們無法量化可讀性的原因。</p><p> </p><p>實(shí)際上,code review是一個(gè)很好的測驗(yàn)代碼可讀性的手段。如果你的同事可以輕松地讀懂你寫的代碼,那說明你的代碼可讀性很好;如果同事在讀你的代碼時(shí),有很多疑問,那就說明你的代碼可讀性有待提高了。</p><p> </p><h3>3.可擴(kuò)展性(extensibility)</h3><p> </p><p>可擴(kuò)展性也是一個(gè)評(píng)價(jià)代碼質(zhì)量非常重要的標(biāo)準(zhǔn)。它表示我們的代碼應(yīng)對(duì)未來需求變化的能力。跟可讀性一樣,代碼是否易擴(kuò)展也很大程度上決定代碼是否易維護(hù)。那到底什么是代碼的可擴(kuò)展性呢?</p><p> </p><p>代碼的可擴(kuò)展性表示,我們?cè)诓恍薷幕蛏倭啃薷脑写a的情況下,通過擴(kuò)展的方式添加新的功能代碼。說直白點(diǎn)就是,代碼預(yù)留了一些功能擴(kuò)展點(diǎn),你可以把新功能代碼,直接插到擴(kuò)展點(diǎn)上,而不需要因?yàn)橐砑右粋€(gè)功能而大動(dòng)干戈,改動(dòng)大量的原始代碼。</p><p> </p><p>關(guān)于代碼的擴(kuò)展性,在后面講到“對(duì)修改關(guān)閉,對(duì)擴(kuò)展開放”這條設(shè)計(jì)原則的時(shí)候,我會(huì)來詳細(xì)講解,今天我們只需要知道,代碼的可擴(kuò)展性是評(píng)價(jià)代碼質(zhì)量非常重要的標(biāo)準(zhǔn)就可以了。</p><p> </p><h3>4.靈活性(flexibility)</h3><p> </p><p>靈活性也是描述代碼質(zhì)量的一個(gè)常用詞匯。比如我們經(jīng)常會(huì)聽到這樣的描述:“代碼寫得很靈活”。那這里的“靈活”該如何理解呢?</p><p> </p><p>盡管有很多人用這個(gè)詞匯來描述代碼的質(zhì)量。但實(shí)際上,靈活性是一個(gè)挺抽象的評(píng)價(jià)標(biāo)準(zhǔn),要給靈活性下個(gè)定義也是挺難的。不過,我們可以想一下,什么情況下我們才會(huì)說代碼寫得好靈活呢?我這里羅列了幾個(gè)場景,希望能引發(fā)你自己對(duì)什么是靈活性的思考。</p><p> </p><ol><li>當(dāng)我們添加一個(gè)新的功能代碼的時(shí)候,原有的代碼已經(jīng)預(yù)留好了擴(kuò)展點(diǎn),我們不需要修改原有的代碼,只要在擴(kuò)展點(diǎn)上添加新的代碼即可。這個(gè)時(shí)候,我們除了可以說代碼易擴(kuò)展,還可以說代碼寫得好靈活。</li><li>當(dāng)我們要實(shí)現(xiàn)一個(gè)功能的時(shí)候,發(fā)現(xiàn)原有代碼中,已經(jīng)抽象出了很多底層可以復(fù)用的模塊、類等代碼,我們可以拿來直接使用。這個(gè)時(shí)候,我們除了可以說代碼易復(fù)用之外,還可以說代碼寫得好靈活。</li><li>當(dāng)我們使用某組接口的時(shí)候,如果這組接口可以應(yīng)對(duì)各種使用場景,滿足各種不同的需求,我們除了可以說接口易用之外,還可以說這個(gè)接口設(shè)計(jì)得好靈活或者代碼寫得好靈活。</li></ol><p> </p><p>從剛剛舉的場景來看,如果一段代碼易擴(kuò)展、易復(fù)用或者易用,我們都可以稱這段代碼寫得比較靈活。所以,靈活這個(gè)詞的含義非常寬泛,很多場景下都可以使用。</p><p> </p><h3>5.簡潔性(simplicity)</h3><p> </p><p>有一條非常著名的設(shè)計(jì)原則,你一定聽過,那就是KISS原則:“Keep It Simple,Stupid”。這個(gè)原則說的意思就是,盡量保持代碼簡單。代碼簡單、邏輯清晰,也就意味著易讀、易維護(hù)。我們?cè)诰帉懘a的時(shí)候,往往也會(huì)把簡單、清晰放到首位。</p><p> </p><p>不過,很多編程經(jīng)驗(yàn)不足的程序員會(huì)覺得,簡單的代碼沒有技術(shù)含量,喜歡在項(xiàng)目中引入一些復(fù)雜的設(shè)計(jì)模式,覺得這樣才能體現(xiàn)自己的技術(shù)水平。實(shí)際上,<strong>思從深而行從簡,真正的高手能云淡風(fēng)輕地用最簡單的方法解決最復(fù)雜的問題。這也是一個(gè)編程老手跟編程新手的本質(zhì)區(qū)別之一。</strong></p><p> </p><p>除此之外,雖然我們都能認(rèn)識(shí)到,代碼要盡量寫得簡潔,符合KISS原則,但怎么樣的代碼才算足夠簡潔?不是每個(gè)人都能很準(zhǔn)確地判斷出來這一點(diǎn)。所以,在后面的章節(jié)中,當(dāng)我們講到KISS原則的時(shí)候,我會(huì)通過具體的代碼實(shí)例,詳細(xì)給你解釋,“為什么KISS原則看似非常簡單、好理解,但實(shí)際上用好并不容易”。今天,我們就暫且不展開詳細(xì)講解了。</p><p> </p><h3>6.可復(fù)用性(reusability)</h3><p> </p><p>代碼的可復(fù)用性可以簡單地理解為,盡量減少重復(fù)代碼的編寫,復(fù)用已有的代碼。在后面的很多章節(jié)中,我們都會(huì)經(jīng)常提到“可復(fù)用性”這一代碼評(píng)價(jià)標(biāo)準(zhǔn)。</p><p> </p><p>比如,當(dāng)講到面向?qū)ο筇匦缘臅r(shí)候,我們會(huì)講到繼承、多態(tài)存在的目的之一,就是為了提高代碼的可復(fù)用性;當(dāng)講到設(shè)計(jì)原則的時(shí)候,我們會(huì)講到單一職責(zé)原則也跟代碼的可復(fù)用性相關(guān);當(dāng)講到重構(gòu)技巧的時(shí)候,我們會(huì)講到解耦、高內(nèi)聚、模塊化等都能提高代碼的可復(fù)用性??梢姡蓮?fù)用性也是一個(gè)非常重要的代碼評(píng)價(jià)標(biāo)準(zhǔn),是很多設(shè)計(jì)原則、思想、模式等所要達(dá)到的最終效果。</p><p> </p><p>實(shí)際上,代碼可復(fù)用性跟DRY(Don’t Repeat Yourself)這條設(shè)計(jì)原則的關(guān)系挺緊密的,所以,在后面的章節(jié)中,當(dāng)我們講到DRY設(shè)計(jì)原則的時(shí)候,我還會(huì)講更多代碼復(fù)用相關(guān)的知識(shí),比如,“有哪些編程方法可以提高代碼的復(fù)用性”等。</p><p> </p><h3>7.可測試性(testability)</h3><p> </p><p>相對(duì)于前面六個(gè)評(píng)價(jià)標(biāo)準(zhǔn),代碼的可測試性是一個(gè)相對(duì)較少被提及,但又非常重要的代碼質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)。代碼可測試性的好壞,能從側(cè)面上非常準(zhǔn)確地反應(yīng)代碼質(zhì)量的好壞。代碼的可測試性差,比較難寫單元測試,那基本上就能說明代碼設(shè)計(jì)得有問題。關(guān)于代碼的可測試性,我們?cè)谥貥?gòu)那一部分,會(huì)花兩節(jié)課的時(shí)間來詳細(xì)講解?,F(xiàn)在,你暫時(shí)只需要知道,代碼的可測試性非常重要就可以了。</p><p> </p><h2>如何才能寫出高質(zhì)量的代碼?</h2><p> </p><p>我相信每個(gè)工程師都想寫出高質(zhì)量的代碼,不想一直寫沒有成長、被人吐槽的爛代碼。那如何才能寫出高質(zhì)量的代碼呢?針對(duì)什么是高質(zhì)量的代碼,我們剛剛講到了七個(gè)最常用、最重要的評(píng)價(jià)指標(biāo)。所以,問如何寫出高質(zhì)量的代碼,也就等同于在問,如何寫出易維護(hù)、易讀、易擴(kuò)展、靈活、簡潔、可復(fù)用、可測試的代碼。</p><p> </p><p>要寫出滿足這些評(píng)價(jià)標(biāo)準(zhǔn)的高質(zhì)量代碼,我們需要掌握一些更加細(xì)化、更加能落地的編程方法論,包括面向?qū)ο笤O(shè)計(jì)思想、設(shè)計(jì)原則、設(shè)計(jì)模式、編碼規(guī)范、重構(gòu)技巧等。而所有這些編程方法論的最終目的都是為了編寫出高質(zhì)量的代碼。</p><p> </p><p>比如,面向?qū)ο笾械睦^承、多態(tài)能讓我們寫出可復(fù)用的代碼;編碼規(guī)范能讓我們寫出可讀性好的代碼;設(shè)計(jì)原則中的單一職責(zé)、DRY、基于接口而非實(shí)現(xiàn)、里式替換原則等,可以讓我們寫出可復(fù)用、靈活、可讀性好、易擴(kuò)展、易維護(hù)的代碼;設(shè)計(jì)模式可以讓我們寫出易擴(kuò)展的代碼;持續(xù)重構(gòu)可以時(shí)刻保持代碼的可維護(hù)性等等。具體這些編程方法論是如何提高代碼的可維護(hù)性、可讀性、可擴(kuò)展性等等的呢?我們?cè)诤竺娴恼n程中慢慢來學(xué)習(xí)。</p><p> </p><h2>重點(diǎn)回顧</h2><p> </p><p>今天的內(nèi)容到此就講完了。我們來一起回顧一下,你需要重點(diǎn)掌握的幾個(gè)知識(shí)點(diǎn)。</p><p> </p><p><strong>1.如何評(píng)價(jià)代碼質(zhì)量的高低?</strong></p><p> </p><p>代碼質(zhì)量的評(píng)價(jià)有很強(qiáng)的主觀性,描述代碼質(zhì)量的詞匯也有很多,比如可讀性、可維護(hù)性、靈活、優(yōu)雅、簡潔等,這些詞匯是從不同的維度去評(píng)價(jià)代碼質(zhì)量的。它們之間有互相作用,并不是獨(dú)立的,比如,代碼的可讀性好、可擴(kuò)展性好就意味著代碼的可維護(hù)性好。代碼質(zhì)量高低是一個(gè)綜合各種因素得到的結(jié)論。我們并不能通過單一的維度去評(píng)價(jià)一段代碼的好壞。</p><p> </p><p><strong>2.最常用的評(píng)價(jià)標(biāo)準(zhǔn)有哪幾個(gè)?</strong></p><p> </p><p>最常用到幾個(gè)評(píng)判代碼質(zhì)量的標(biāo)準(zhǔn)是:可維護(hù)性、可讀性、可擴(kuò)展性、靈活性、簡潔性、可復(fù)用性、可測試性。其中,可維護(hù)性、可讀性、可擴(kuò)展性又是提到最多的、最重要的三個(gè)評(píng)價(jià)標(biāo)準(zhǔn)。</p><p> </p><p><strong>3.如何才能寫出高質(zhì)量的代碼?</strong></p><p> </p><p>要寫出高質(zhì)量代碼,我們就需要掌握一些更加細(xì)化、更加能落地的編程方法論,這就包含面向?qū)ο笤O(shè)計(jì)思想、設(shè)計(jì)原則、設(shè)計(jì)模式、編碼規(guī)范、重構(gòu)技巧等等,這也是我們后面課程學(xué)習(xí)的重點(diǎn)。</p><p> </p><h2>話題討論</h2><p>除了我今天提到的這些,你覺得還有哪些其他的代碼評(píng)價(jià)標(biāo)準(zhǔn)非常重要?聊一聊你心目中的好代碼是什么樣子的?</p><p> </p><p>歡迎在留言區(qū)發(fā)表你的觀點(diǎn),我會(huì)與你積極討論。</p>
從哪些維度評(píng)判代碼質(zhì)量的好壞?如何具備寫出高質(zhì)量代碼的能力?
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 代碼描述常用詞匯:靈活性(flexibility)、可擴(kuò)展性(extensibility)、可維護(hù)性(mainta...
- 在工作過程中,當(dāng)評(píng)論起項(xiàng)目代碼質(zhì)量的時(shí)候,聽到的最多的評(píng)語就是:“代碼寫得很爛”或者“代碼寫得很好”。用“好”“爛...
- 一、如何評(píng)價(jià)代碼質(zhì)量的高低? 可維護(hù)性(maintainability)如果 bug 容易修復(fù),修改、添加功能能夠...
- 如何評(píng)價(jià)代碼質(zhì)量的高低?代碼質(zhì)量的評(píng)價(jià)有很強(qiáng)的主觀性,描述代碼質(zhì)量的詞匯也有很多,比如可讀性,可維護(hù)性,靈活,優(yōu)雅...
- 高質(zhì)量的代碼具有:可維護(hù)性、可讀性、可擴(kuò)展性、靈活性、簡潔性(簡單、復(fù)雜)、可復(fù)用性、可測試性。 可維護(hù)性(mai...