在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>源碼下載>C/C++語言編程>

優先提高代碼的可讀性的必要

大小:0.03 MB 人氣: 2017-09-26 需要積分:1

  什么阻礙了開發者閱讀代碼

  好吧,我們一致認為,我們應該讓代碼更易于閱讀,這樣可以節約時間和金錢,對吧?但這究竟意味著什么?

  有跡象表明,下面兩個基本方面極大地降低了開發者閱讀代碼的速度:

  代碼晦澀難懂,

  代碼難以跟蹤。

  代碼艱澀難懂

  遺憾的是,人們并不能像軟件解釋器那樣,可以不必理會將兩個數相加并調用一個函數這部分代碼的功能(機械式的編譯)。

  為了查找代碼異常的原因,程序員必須理解源程序中編寫的代碼實現了何種功能,編寫的初衷是為了實現何種功能。

  什么讓代碼晦澀難懂?

  下面情況是對于經驗豐富的開發者而言,這些開發者熟悉代碼開發使用的語言和程序中使用的算法(即他們有足夠的知識來理解這段代碼)。

  代碼不良。 單個字母的奇怪變量和1000行代碼的冗長函數。

  代碼的格式不正確或不一致。

  代碼中包含冗余代碼。

  代碼中包含未備注的低層次優化。

  代碼過于高明。

  我將跳過前兩條,因為無論如何你不應該閱讀不良代碼。 如果你所在的公司有人編寫了不良代碼,你應該糾正它們或者將其廢棄。 當然,你必須為你的整個代碼庫執行嚴格的編程規范。

  3. 代碼中包含冗余代碼

  亦或所謂的行數優化。 嵌套函數調用和條件運算符的長行代碼難以剖析。 你可能會說這種觀點是片面的。 但這些人覺得源程序代碼越短越好,不必考慮可讀性。

  4. 未備注地層次優化

  最初,代碼的可讀性很好,工作也很穩定,但有些人決定在某些方面對其進行優化。 經過認真剖析,這可能是一個很好的優化,但此時的代碼看上去像是數組、位運算和幻數的結合體。 沒有人知道代碼在做什么,代碼應該做什么,因為完成優化的人沒有提交任何說明。

  也許你聽說過優秀的代碼不需要說明文檔。 但是經過優化的代碼(特別是優化效果很理想的情況)必須要有說明文檔。

  在你的代碼庫中,可能大部分的優化只是像這樣的未備注行

  1 if(val!=val){。。.}

  5. 代碼過于高明

  作為軟件開發者,我們掌握越來越多的技巧并將其運用到實際代碼開發中。 畢竟,我們是計算機科學家,而不只是碼農!

  有些語言甚至鼓勵開發者使用前沿技術,使代碼更具表現力和學術性。 當你用代碼建立了一個非常健壯的系統,特別當你用數學方法證明了一個高深定理,而99.997%受過教育的人對這種方法都不理解,你就會有這種成就感。

  即使代碼被良好地封裝成模塊/類/函數并且這些模塊包含完全可讀的命令式代碼,但其他人想要讀懂這段代碼,他們必須掌握整個代碼的框架以及所有使用的相關技術和模式。

  再一次強調,記住“其他人”可能就是一周后的你。

  極可能這是我在工作中僅認識兩個使用Scala語言人的原因。就我個人而言,非常喜歡Scala語言。 對我來說,它就是一個學術操場,我可以在那里建造玻璃城堡。 一旦你越了解它,它的越多特性也就能為你所用,你也就越明白它本質上只是一門編程語言(請不要在這里引用我!)。

  雖不如Perl語言,但即使最漂亮的代碼庫也需要修改和更新。 現在,你需要尋找一個能夠理解這些優美代碼的人……

  簡潔高明的代碼難以閱讀似乎是有爭議的。

  “軟件調試要比編寫代碼困難一倍,如果你發揮了最大才智編寫代碼,那么你的智商便不足以調試這個代碼。 ” —— Brian Kernighan

  代碼難以跟蹤

  閱讀代碼時,通常需要頻繁的從一個函數或類跳轉到另一個函數或類。 掌握你使用的集成開發環境(IDE),可以節約很多閱讀時間。 通過使用集成開發環境(例如Visual Studio)的“跳轉至聲明”,“查找使用”,“導航至”,“檢查”等特性,你可以將整個代碼看作是一幅連通圖。

  在Notepad中編寫代碼是不錯的選擇,但是如果你想有效的閱讀代碼,必須掌握一個集成開發環境。

  那么,究竟什么是連通圖呢?

  連通圖是在拓撲空間中連接的圖,即圖中任意兩點之間都有一條通路。

  

  換句話來說,在“連通”代碼中,你可以方便的從一個方法中跟蹤到另一個方法中,并在你頭腦中建立這段代碼的功能框架。

  如果代碼中某一部分鏈接被破壞(在這種情況下,集成開發環境不能幫助你實現函數間的跳轉),通常你必須花一些時間自己查找鏈接。代碼中被破壞的鏈部分越多,越難以跟蹤,代碼也就越難以閱讀。

  那么,為什么代碼圖會被斷開?原因是多方面的,下面將列出一些常見情況:

  1. 使用字符串引用方法和屬性

  一些框架就喜歡這樣做,他們將”回調”作為字符串傳遞并在需要時使用反射。 此時你需要使用CMD+F查找。

  最可惡的是動態語言中的動態字符串…… 對這個問題,向Java或AS3致敬!

  2. 代碼被分割成互不相連的部分

  例如,你的代碼一半使用C#編寫,另一半是在可視化節點編輯器生成。 在這兩者之間跳轉非常不易。

  依賴注入框架和其他XML配置工具也是。雖然沒有明確說明,但編寫XML配置文件也屬于編程。 這就是所謂的的聲明式編程(更不用說那些構建基于XML命令式語言的瘋狂的人)。

  3. 巨大的圖節點

  20個鏈接跳轉到這個包含1000行代碼的函數?。。哎喲。 你不需要包含這種節點的圖。

  4. 一切都過于抽象

  通過跳轉至聲明,你可到達一個接口或者一個抽象類,必須弄清楚有哪些實現。 依賴注入,抽象工廠和其他所有反對依賴的方法使得這一切變得更糟。 代碼圖中節點間的聯系過于抽象。

  這樣說來,我討厭依賴注入(DI)和擴展標識語言(XML)。但DI是一個很棒的工具,它可以讓你避免書寫面條式代碼并讓程序的架構更加模塊化,更具可測試性。但像其他好的事物一樣,過度依賴必然產生負面效果。

  我曾在審查一個應用程序時感到完全氣餒,因為我意識到自己弄不明白程序從何處開始。。。例如它的入口點在哪。 這一切都是在程序開始時從XML配置工具自動生成。

  但我確實討厭XML配置工具。

  所以,到這里你應該已經學會:

  掌握你的集成開發環境,

  盡可能保持代碼圖連通,

  首先編寫簡單代碼,

  編寫不必要的代碼,就是在浪費金錢。

  強迫自己編寫簡單的代碼,避免在早期階段優化確實有一定難度,這需要花費時間。

  在截止期前2小時已連續工作48小時,如果你在半睡半醒的狀態下能夠閱讀你所使用的代碼,你應該對過去的自己說聲“謝謝”。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?
      主站蜘蛛池模板: 亚洲欧美色鬼久久综合 | 免费一级特黄 | 操爽视频 | 免费国产黄网站在线观看视频 | 深夜动态福利gif进出粗暴 | 91极品视频在线观看 | 又黄又湿又爽 | 天堂在线最新版www中文 | 上课被同桌强行摸下面小黄文 | 黄 色 成 年人在线 黄a大片 | 国产一级特黄毛片 | 日韩精品视频免费观看 | 色噜噜狠狠狠狠色综合久 | 色综合天天综一个色天天综合网 | 夜夜爱夜夜爽 | 国产一级在线观看www色 | 人成电影免费观看在线 | 你懂得福利 | 色偷偷视频 | 91网站网站网站在线 | 免费在线不卡视频 | 色香欲综合成人免费视频 | 天天视频免费观看高清影视 | 99久久综合 | 九色在线 | 免费污视频在线 | baoyu777永久免费视频 | 欧美色图亚洲自拍 | 国产理论精品 | 干干操 | 欧美色图在线观看 | 国产精品主播在线 | 国产精品777| 又黄又爽又猛大片录像 | 国产色婷婷精品综合在线 | h黄视频 | 狠狠的日视频 | 97夜夜澡人人爽人人喊一欧美 | 夜夜操夜夜骑 | 一区二区不卡视频在线观看 | 人人天天夜夜 |