乐清谧种大药房有限公司

Menu

什么樣的代碼叫好代碼?

網(wǎng)站建設(shè) 錄入時(shí)間 2022-03-01 閱讀次數(shù) 無(wú)雙建站

編程界有句名言:“計(jì)算機(jī)程序是寫(xiě)給人看的,只是順帶計(jì)算機(jī)可以執(zhí)行”。程序易讀,沒(méi)有花架子、沒(méi)有不必要的提前優(yōu)化,這是通用的原則。

但是在工程實(shí)踐上,什么是好的代碼,取決于代碼滿足要的需求的領(lǐng)域。

一段好的代碼,最少要遵守基本的編程規(guī)范,比如命名方式,注視等等,就拿變量名來(lái)說(shuō),必須讓人通過(guò)字面意思大概能知道這個(gè)變量是做什么的,代表什么意思,閱讀性要好,否則其他人看到代碼跟看天書(shū)一樣,完全不知道是在做什么。同樣的,方法命名也是一個(gè)道理。

以下圖舉例來(lái)說(shuō),兩個(gè)方法都是檢查用戶名與密碼是否為空,但是個(gè)方法明顯規(guī)范于第二個(gè)方法,變量名就是賬號(hào)與密碼的英文單詞,一看就明白,而第二個(gè)方法以a,b,c來(lái)命名,沒(méi)人知道是啥意思,這種代碼是最差的。

1e06f00018b2fd52627da.jpg

下圖是一段摘自我個(gè)人項(xiàng)目的 C 語(yǔ)言代碼(業(yè)余時(shí)間寫(xiě)作,非公司資產(chǎn)),可以看到用到了各種教科書(shū)都極力反對(duì)的 goto 語(yǔ)句,但實(shí)際上,如果是 C 語(yǔ)言比較熟練的話,使用 goto 語(yǔ)句可以大大簡(jiǎn)化函數(shù)返回時(shí)的清理代碼,達(dá)到類似 C++ 語(yǔ)言 RAII 的效果。

59121f756695401eab074ceb6962387f.jpg

再舉個(gè)例子來(lái)說(shuō),當(dāng)你的工作是實(shí)現(xiàn)一個(gè)被廣泛調(diào)用的庫(kù)函數(shù),比如 C 語(yǔ)言 malloc 這樣的內(nèi)存分配函數(shù),那么,速度和內(nèi)存使用效率就是就是更大的需求,函數(shù)實(shí)現(xiàn)可以使用各種丑陋的優(yōu)化技巧甚至內(nèi)嵌匯編等等,但只要滿足基本需求,這些破壞基本可讀性原則的手段就不會(huì)影響你的代碼成為一段好的代碼。

在滿足需求的前提下,我認(rèn)為好的代碼還符合以下特征:

  1. 簡(jiǎn)單性:能用簡(jiǎn)單實(shí)現(xiàn)的方法就不要用復(fù)雜的方法,越簡(jiǎn)單的代碼越容易維護(hù);

  2. 可讀性:無(wú)論是作者還是他人,都能很容易通過(guò)閱讀代碼了解到代碼實(shí)現(xiàn)的功能,且代碼的編寫(xiě)沒(méi)有違反常理的地方;

  3. 分層與模塊化:從架構(gòu)的層面讓代碼易于理解與修改;

  4. 優(yōu)雅與簡(jiǎn)潔:代碼在滿足功能需求的情況下盡量采用成熟的算法與邏輯,舉個(gè)例子,計(jì)算從 1 加到 100 的總和,優(yōu)雅簡(jiǎn)潔的方法是使用等差數(shù)列公式求和而不是用循環(huán)累加;

  5. 效率:一般來(lái)說(shuō)符合上面4條的代碼效率不會(huì)差,但也應(yīng)把效率問(wèn)題牢記在心,比如寫(xiě) Java 程序,如果遇到多次字符串相加的情況,隨時(shí)記得用 StringBuilder 來(lái)替換簡(jiǎn)單的字符串連接。

代碼的本質(zhì)還要在機(jī)器上運(yùn)行,好的代碼不單單的純粹的簡(jiǎn)單的幾個(gè)字符的問(wèn)題,好的代碼不僅僅是排版上或者語(yǔ)法上好看,還要能經(jīng)過(guò)產(chǎn)品的測(cè)試驗(yàn)證,這是評(píng)判代碼好壞的最準(zhǔn)確的標(biāo)準(zhǔn)。

【版權(quán)聲明】:本站內(nèi)容來(lái)自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),供訪客免費(fèi)學(xué)習(xí)需要。如文章或圖像侵犯到您的權(quán)益,請(qǐng)及時(shí)告知,我們第一時(shí)間刪除處理!謝謝!

無(wú)雙科技
如何獲取外貿(mào)詢盤(pán)和訂單?
網(wǎng)站建設(shè)咨詢:13534259410

經(jīng)典客戶案例展示

熱門服務(wù)
眾多企業(yè)的選擇

深圳無(wú)雙科技 - 專注于高端網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)開(kāi)發(fā)、品牌網(wǎng)站制作

咨詢電話:13534259410

售后服務(wù):13534259410  (7×24小時(shí))
在線 Q Q:253849310 (售前咨詢)

深圳網(wǎng)站建設(shè)咨詢
【掃一掃咨詢】
  • 掃一掃 在線咨詢
    無(wú)雙科技官方公眾號(hào)
  • 響應(yīng)式客戶端
    掃一掃 關(guān)注好友
體驗(yàn)創(chuàng)新服務(wù)

深圳無(wú)雙科技,專注于深圳網(wǎng)站建設(shè)、深圳網(wǎng)站設(shè)計(jì)、深圳網(wǎng)站制作。
服務(wù)客戶超3000家,一站式網(wǎng)站建設(shè)及推廣營(yíng)銷解決方案提供商。
我們的價(jià)值觀:誠(chéng)信、坦誠(chéng)、盡責(zé)、創(chuàng)新。期待與您合作!

您好,很高興為您服務(wù) ^_^