国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何編寫可讀的代碼

開發 前端
在過去的五年里,我們收集了上百個“壞代碼”的例子(其中很大一部分是我們自己寫的),并且分析是什么原因使它們變壞,使用什么樣的原則和技術可以讓它們變好。

代碼最重要的讀者不再是編譯器、解釋器或者電腦,而是人。寫出的代碼能讓人易于理解、輕松維護、容易擴展的程序員才是專業的程序員。

編寫可讀的代碼

代碼應當易于理解

在過去的五年里,我們收集了上百個“壞代碼”的例子(其中很大一部分是我們自己寫的),并且分析是什么原因使它們變壞,使用什么樣的原則和技術可以讓它們變好。我們發現所有的原則都源自同一個主題思想。

關鍵思想:代碼應當易于理解

我們相信這是當你考慮要如何寫代碼時可以使用的最重要的指導原則。我們會展示如何把這條原則應用于你每天編碼工作的各個不同方面。但在開始之前,我們會詳細地介紹這條原則并證明它為什么這么重要。

是什么讓代碼變得“更好”

大多數程序員(包括兩位作者)依靠直覺和靈感來決定如何編程。我們都知道這樣的代碼:

  1. for (Node* node = list->head; node != NULL; nodenode = node->next)     
  2. Print (node->data); 

比下面的代碼好:

  1. Node* node = list->head;     
  2. if (node == NULL) return;     
  3. while (node->next != NULL) {     
  4. Print (node->data);     
  5. node = node->next;     
  6. }     
  7. if (node != NULL) Print (node->data); 

(盡管兩個例子的行為完全相同。)但很多時候這個選擇會更艱難。例如,這段代碼:

  1. return exponent >= 0 ? mantissa * (1 << exponent) : mantissa / (1 << -exponent);  

它比下面這段要好些還是差些?

  1. if (exponent >= 0) {  
  2. return mantissa * (1 << exponent);  
  3. else {     
  4. return mantissa / (1 << -exponent);     

第一個版本更緊湊,但第二個版本更直白。哪個標準更重要呢?一般情況下,在寫代碼時你如何來選擇?

可讀性基本定理

在對很多這樣的例子進行研究后,我們總結出,有一種對可讀性的度量比其他任何的度量都要重要。因為它是如此重要,我們把它叫做“可讀性基本定理”。

關鍵思想:代碼的寫法應當使別人理解它所需的時間最小化。

這是什么意思?其實很直接,如果你叫一個普通的同事過來,測算一下他通讀你的代碼并理解它所需的時間,這個“理解代碼時間”就是你要最小化的理論度量。

并且當我們說“理解”時,我們對這個詞有個很高的標準。如果有人真的完全理解了你的代碼,他就應該能改動它、找出缺陷并且明白它是如何與你代碼的其他部分交互的。

現在,你可能會想:“誰會關心是不是有人能理解它?我是唯一使用這段代碼的人!”就算你從事只有一個人的項目,這個目標也是值得的。那個“其他人”可能就是 6 個月的你自己,那時你自己的代碼看上去已經很陌生了。而且你永遠也不會知道——說不定別人會加入你的項目,或者你“丟棄的代碼”會在其他項目里重用。

總是越小越好嗎

一般來講,你解決問題所用的代碼越少就越好。很可能理解 2000 行代碼寫成的類所需的時間比 5000 行的類要短。但少的代碼并不總是更好!很多時候,像下面這樣的一行表達式:

  1. assert ((!(bucket = FindBucket (key))) !bucket->IsOccupied ()); 

理解起來要比兩行代碼花更多時間:

  1. bucket = FindBucket (key);     
  2. if (bucket != NULL) assert (!bucket->IsOccupied ()); 

類似地,一條注釋可以讓你更快地理解代碼,盡管它給代碼增加了長度:

  1. // Fast version of “hash = (65599 * hash) + c”     
  2. hash = (hash << 6) + (hash << 16) – hash + c; 

因此盡管減少代碼行數是一個好目標,但把理解代碼所需的時間最小化是一個更好的目標。

理解代碼所需的時間是否與其他目標有沖突

你可能在想:“那么其他約束呢?像是使代碼更有效率,或者有好的架構,或者容易測試等?這些不會在有些時候與使代碼容易理解這個目標沖突嗎?”我們發現這些其他目標根本就不會互相影響。就算是在需要高度優化代碼的領域,還是有辦法能讓代碼同時可讀性更高。并且讓你的代碼容易理解往往會把它引向好的架構且容易測試。有些程序員對于任何沒有完美地分解的代碼都不自覺地想要修正它。這時很重要的是要停下來并且想一下:“這段代碼容易理解嗎?”如果容易,可能轉而關注其他代碼是沒有問題的。

最難的部分

是的,要經常地想一想其他人是不是會覺得你的代碼容易理解,這需要額外的時間。這樣做就需要你打開大腦中從前在編碼時可能沒有打開的那部分功能。但如果你接受了這個目標(像我們一樣),我們可以肯定你會成為一個更好的程序員,會產生更少的缺陷,從工作中獲得更多的自豪,并且編寫出你周圍人都愛用的代碼。

本文節選自《編寫可讀代碼的藝術》一書,Dustin Boswell、Trevor Foucher 著,尹哲、鄭秀雯譯,由機械工業出版社出版。

原文鏈接:http://blog.jobbole.com/23599/

【編輯推薦】

  1. 再議頁面前端的水有多深
  2. Web前端:11個讓你代碼整潔的原則
  3. 寫更少的代碼
  4. 復制粘貼代碼真的有問題嗎?
  5. 前端工程師的價值體現在哪里?
責任編輯:張偉 來源: 伯樂在線
相關推薦

2013-03-22 16:43:03

可讀代碼代碼的藝術代碼編寫

2024-04-23 08:01:20

面向對象C 語言代碼

2011-04-15 15:16:18

代碼編程

2015-08-27 13:11:18

JavaScript代碼

2021-10-09 10:24:53

Java 代碼可讀性

2022-06-07 09:30:35

JavaScript變量名參數

2024-06-24 14:19:48

2021-03-17 08:00:59

JS語言Javascript

2024-03-20 08:00:00

軟件開發Java編程語言

2023-10-10 08:00:00

2014-04-25 09:02:17

LuaLua優化Lua代碼

2013-04-15 09:02:43

JavaScriptJS

2015-01-28 14:30:31

android代碼

2021-06-08 09:35:11

Cleaner ReaReact開發React代碼

2022-12-15 10:52:26

代碼開發

2022-06-27 06:23:23

代碼編程

2010-02-05 16:49:05

編寫Android 代

2012-03-15 13:36:51

云計算JavaSpring框架

2015-12-17 13:19:29

編寫高性能Swift

2011-03-24 13:09:11

數據庫代碼
點贊
收藏

51CTO技術棧公眾號

国产成人精品三级麻豆| 国产一区网站| 中文在线一区二区| 欧美日韩国产系列| 欧美一区二区三区综合| 亚洲国产免费看| 亚洲一区二区三区欧美| 国产精品996| 不卡av免费在线| 成人免费在线观看入口| 免费福利在线观看| 国产亚洲视频在线观看| 国产一区一一区高清不卡| 久久777国产线看观看精品| 视频一区日韩| 久久久国产在线视频| 国模私拍国内精品国内av| 欧美成人合集magnet| 久久久久久久久久久妇女| 亚欧洲精品在线视频免费观看| 亚洲国产成人精品久久| 亚洲蜜桃在线| 99久免费精品视频在线观看| 黄色网在线播放| 免费高清一区二区三区| 伊人久久久久久久久久久| 欧美精品自拍偷拍| 99se视频在线观看| 中文字幕亚洲一区二区三区五十路| 另类视频一区二区三区| 午夜精品久久久久久99热| 91精品99| 国产一区二区网| 亚洲精品成人在线| eeuss影院www在线观看| 亚洲欧美国产制服动漫| 这里只有精品在线| 国产中文字幕第一页| 亚洲精品v欧美精品v日韩精品| 888久久久| 日本我和搜子同居的日子高清在线 | 国产伦精品一区二区三区视频免费 | 99视频精品免费观看| 久久综合九九| 中文字幕不卡在线观看| 日日噜噜噜夜夜爽爽狠狠| 欧美性xxxxxx| 国产精品亚洲一区二区三区在线观看 | 久久亚洲影音av资源网| 精品国产午夜| 欧美日韩亚洲一区二区三区在线观看| 国产综合色视频| 成人羞羞视频免费看看| 欧美日韩亚洲一区三区| 欧美女人性生活视频| 精品国产乱码久久久久酒店| 丁香花视频在线观看| 国产成+人+综合+亚洲欧洲 | 性8sex亚洲区入口| 亚欧在线免费观看| 日韩欧美中文一区| 欧美午夜精彩| 水蜜桃在线免费观看| 日韩欧美国产一区二区| 免费视频成人| 亚洲精品高清视频| 午夜视频一区在线观看| 亚洲欧洲日本韩国| 亚洲影视中文字幕| 亚洲一区二区三区四区在线观看| 你懂得影院夜精品a| 亚洲在线观看视频网站| 国产精品麻豆欧美日韩ww| www.51av欧美视频| 成人欧美一区二区三区在线| 国产精品不卡在线观看| 麻豆精品国产| 波多野结衣综合网| 亚洲免费av网址| 美女视频第一区二区三区免费观看网站 | 综合激情网...| 黄色成人在线看| 日韩视频免费在线观看| 国产黄色精品网站| 超碰一区二区| 老太脱裤让老头玩ⅹxxxx| 日韩www在线| 久久国内精品视频| 福利一区二区免费视频| 无码中文字幕色专区| 亚洲欧美日韩国产成人| aa级大片欧美| 日韩影视在线观看| 久久国产情侣| 91精品一区二区| 精品成人佐山爱一区二区| 国产日韩一区| 欧美xxxx做受欧美护士| 有色激情视频免费在线| 精品视频久久久久久| 在线日韩一区| 亚洲免费不卡| 91精品国产综合久久久久| 麻豆久久精品| 三级中文字幕在线观看| 自拍偷拍21p| 久久99国产精品99久久| 日韩乱码在线视频| 久久久影视传媒| 丝袜亚洲另类欧美综合| 久久亚洲国产精品尤物| 日本中文视频| 国产免费色视频| 日韩av免费在线看| 欧美剧在线免费观看网站| 成人18视频在线播放| 红桃视频国产精品| 中文字幕一区二区三区四区久久| 青青草在线免费观看| 国产一二三四区在线观看| 日本乱人伦a精品| 一本色道久久88综合亚洲精品ⅰ | 国产精品jizz在线观看麻豆| 欧美欧美欧美欧美首页| 国产精品成人免费| 国产一区啦啦啦在线观看| 欧美国产偷国产精品三区| 亚洲伦理影院| 日本无删减在线| 青柠在线影院观看日本| 精品一卡二卡三卡| 你懂的视频在线一区二区| 国产精品成人在线| 欧美高清无遮挡| 久久成人国产精品| 亚洲欧美色婷婷| 欧美不卡一区二区三区| 51午夜精品国产| 欧美私人免费视频| 一区二区三区欧美亚洲| 波多野结衣在线aⅴ中文字幕不卡| 久久av一区二区三区| 日本最新不卡在线| 亚洲自啪免费| 蜜芽一区二区三区| 国产99久久久国产精品潘金| 黄页网站大全一区二区| 久久黄色级2电影| 国产精品一区二区三区乱码| 国产一区二区网址| 中文日韩在线| 亚洲精品97久久| 欧美乱熟臀69xxxxxx| 欧美高清激情brazzers| 欧美精品一二三| 欧美xxxxxxxx| 亚洲美女av电影| 日韩亚洲成人av在线| 国内外成人免费激情在线视频| 国产精品91久久| 91九色单男在线观看| 久久精品aaaaaa毛片| 可以免费看的黄色网址| 老太脱裤子让老头玩xxxxx| 免费全黄无遮挡裸体毛片| 在线看黄的网站| 樱桃视频在线观看一区| 欧美日韩国产精品一区二区不卡中文 | 成人黄色在线免费观看| 国产成人女人毛片视频在线| 日本午夜一区二区三区| 99er在线视频| 国产精品666| 日韩精品极品| 成人资源在线播放| 日韩午夜高潮| 国产欧美日本一区视频| 欧美性感一类影片在线播放| 日韩视频在线观看免费| 91九色露脸| 免费看a级黄色片| 日本在线视频网| 网曝91综合精品门事件在线| 美女网站色91| 欧美性高潮在线| 亚洲性夜色噜噜噜7777| 亚洲一区亚洲二区亚洲三区| 熟妇人妻va精品中文字幕 | 日韩精品极品| 欧美激情成人| 久久久99免费| 日韩精品一二三四区| 国产一区精品在线| 在线观看免费视频高清游戏推荐| 69av成人| aa国产精品| 精品国免费一区二区三区| av蓝导航精品导航| aⅴ在线免费观看| 国精产品一区二区三区有限公司|