色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何編寫可讀性代碼

張康康 ? 2019-08-16 18:13 ? 次閱讀

編寫可讀性代碼


作者:極鏈科技 湯紅燕

什么叫可讀性代碼?

簡單來說,就是易于理解、耗腦時間少、可維護性較高的代碼。

編寫可讀性代碼

信息裝到名字里(一個好的名字可以承載很多信息)

1. 選擇專業的詞(避免“空洞”)

比如函數 getUserInfo( ) 是用來獲取用戶信息,但是,是從接口中獲取的信息呢?還是在頁面已經暴露的信息?看到的時候就會有疑問。

命名的時候,如果是從互聯網中獲得,可以使用fetchUserInfo( )來表示。

2. 找到更有表現力的詞(更清晰、精確)

比如:search 和 find 區別 ,再可以類似于表格數據的篩選, 可以考慮用更準確的詞匯去表示。

9442a3755ac247069a2879da26566215.png

避免使用像 tmp 和 retval 這樣泛泛的名字。

3. 使用具體的名字更細致地描述事物

對于一個變量包含十六進制字符串,命名為 let id,但是為何不命名成 let hex_id?

如果你的變量時一個度量值的話,最好讓名字帶上它的單位。

4. 名字應該有多長

在編寫代碼取名的時候總會有一些疑問,我的定義名稱該多長才合適?可以遵循以下幾點:

l 小作用域里可以使用短的名字;

l 首字母縮略詞和縮寫(當然是在成員能看懂的情況下 TBColor -> TextBackgroundColor);

l 丟掉沒用的詞(no-padding-all -> no-padding);

l 利用名字的格式來傳遞含義(比如所有的class 是class-name, id 是 id_id);

不會讓人誤解的名字

常用的 filter() 命名,如果新同學看到,可能會產生疑問,這是過濾掉滿足要求的值呢還是不滿足要求的?

為了便于處理以上情況,有以下幾點建議:

l 使用 min 和 max 來表示(包含)極限

l 使用 first 和 last 來表示包含的范圍

l 使用 begin 和 end 來表示包含/排除范圍

l 給布爾值命名

對于語句 bool read_password = true 是我們已經讀取密碼,還是我們需要讀取密碼?

這時候可以用 need_password 或 user_is_authenticated 這樣的名字來代替;

像 is 、has 、can或should這樣的詞,就可以把布爾值變得更明確。

審美

代碼的審美,確切地說,有三條原則:

1. 使用一致的布局,讓讀者很快就習慣這種風格。

2. 讓相似的代碼看上去相似。

3. 把相關的代碼行分組,形成代碼塊。

該寫怎樣的注釋

1. 從代碼本身快速推斷出事實的不需要注釋

2. 不要為了注釋而注釋

3. 不要給不好的名字加注釋(不如改名字)

4. 加入“導演評論”,你可以在代碼中加入注釋來記錄你對代碼有價值的見解。

5. 為代碼中的瑕疵寫注釋

b2e97cee7cd1459086c5b06654154d9f.png

6. 給常量加注釋(有些常量不需要注釋,因為它們的名字已經很清楚,但很多常量可以通過加注釋得以改進)

7. 站在讀者的角度,“全局觀”注釋

e847d704d9574e7b836ab5fa202b9ef9.png

寫出言簡意賅的注釋

1. 讓注釋保持緊湊

2. 避免使用不明確的代詞(如it,this等)

3. 潤色粗糙的句子

4. 精確地描述函數的行為

比如用輸入/輸出例子來說明特別的情況

下面是一個用來移除部分字符串的通用函數:

248217c7228d4cb5b35e3bdaa7d95619.png

5. 聲明代碼的意圖

對于“具名函數參數”的注釋,就是像 C# Python 這類語言的命名函數參數,讓每個參數的意義更加明確。

比如:

e7090c398a35419b852febc7a4436cbb.png

6. 采用信息含量高的詞

l 避免使用代詞

l 盡量精確描述函數的行為

l 精心挑選輸入/輸出的例子

l 聲明代碼的高層次意圖,而非明顯的細節

l 用嵌入注釋解釋難以理解的函數參數

l 用含義豐富的詞語

簡化循環和邏輯

1. 把控制流變得易讀

l 條件語句中參數的順序

比較左側: “被詢問”的表達式,它的值傾向于不斷變化

比較右側: 用來做比較的表達式,它的值更傾向于常量

l if/else 語句塊的順序

首先處理正邏輯而不是負邏輯

再處理簡單的情況

最后處理有趣的或者是可疑的情況

l ?: 表達式, 只有在簡單的情況下使用

l 避免 do/while 循環

l 從函數中提前返回

l 最小化嵌套

l 減少循環內嵌套

2. 拆分超長表達式

l 用做解釋的變量

c8c164cedcb64b88b4eb5d32dc4d902f.png

l 總結變量(用一個短很多的名字來代替一大塊代碼,這就是總結變量)

l 拆分巨大的語句

比如:

a29c9a62cd6e4ccca8a110e99b13a356.png

顯而易見,這段代碼邏輯很清晰,但是看著太復雜,下面改掉:

436ad7f8528741d681bbfce62de1bbad.png

這樣做有很多好處:

- 避免輸入的錯誤。

- 縮短了行的寬度,更容易快速閱讀。

- 如果類名字改變了,只需要改變一個地方就行了。

3. 變量與可讀性

l 減少變量,即那些妨礙的變量。通過離開處理結果來消除“中間結果”的變量。

l 減少每個變量的作用域,越小越好。

l 只寫一次的變量更好,那些只設置一次值的變量(或者 const 、final 、常量)使得代碼更容易理解。

4. 抽取不相關的子問題

l 積極地發現并抽取不相關的子邏輯:

- 看看某個函數或代碼塊,問問自己:這段代碼的高層次的目標是什么?

- 對于每一行代碼,問下:它是為了目標而寫的么?

- 如果足夠的行數在解決不相關的子問題,試圖抽取代碼到獨立函數中。

l 純工具代碼(封裝共用的函數)

l 其他多用途代碼(比如頁面上數據邏輯代碼)

l 創建大量通用代碼(組件)

- 通用代碼很好,因為“完全地從項目的其他部分中解耦出來”。

l 項目專有的功能(私有組件)

l 簡化已有接口,按需重塑接口

5. 一次只做一件事

應該把代碼組織得一次只做一件事情。如何給代碼整理碎片,下圖演示了這個過程:

8bcf6a42bfdf444fb2d5be2e5c407d91.png

6. 把想法變成代碼

如果有好的想法,則可以實現為代碼,但需要注意以下幾點:

l 清楚地描述邏輯

l 可了解相關函數庫,以便減少代碼量

l 把這個方法應用于更大的問題

l 用自然語言描述解決方案

l 遞歸地使用這種方法

7. 少寫代碼

“最好讀的代碼就是沒有代碼”,在收到一個需求的時候,要質疑和拆分你的需求,用小的代碼庫,去替代大的代碼庫;刪除沒有用的代碼,簡化實現過程;熟悉你周邊的庫,了解最優庫;對于一些庫的重用,可以極大的節省時間。

總結

以上就是關于可讀性代碼的建議和實現方式,好的代碼不僅閱讀輕松,維護起來也是事半功倍。養成好的書寫處理習慣,會為我們的工作和學習帶來極大的便利。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏

    評論

    相關推薦

    西門子流量累計FB塊介紹

    成一個易于使用的模塊,從而簡化了編程工作,提高了代碼可讀性和維護。 ?? 一、意義 ?? 簡化編程 :通過使用預先編寫好的FB塊,工程師可以快速地實現流量累計功能,而無需從頭
    的頭像 發表于 12-19 10:28 ?73次閱讀
    西門子流量累計FB塊介紹

    Java代碼之美,從遵循樣式規范開始

    作者:京東零售 劉仲偉 在軟件開發的世界里,代碼不僅是程序的基石,更是程序員交流的通用語言。而Java,作為一門廣泛應用于企業級應用的編程語言,其代碼可讀性和一致對于項目的長期維護
    的頭像 發表于 11-27 11:42 ?181次閱讀
    Java<b class='flag-5'>代碼</b>之美,從遵循樣式規范開始

    對比Python與Java編程語言

    使得編寫代碼更加靈活,但也可能導致運行時錯誤。 Java 語法相對冗長,需要顯式聲明變量類型,增加了代碼可讀性和安全。 靜態類型系統在編
    的頭像 發表于 11-15 09:31 ?289次閱讀

    AIC3254的miniDSP編寫代碼編寫C5502代碼有什么區別?

    問題:AIC3254的miniDSP編寫代碼編寫C5502代碼有什么區別,執行速度和代碼量來進行分析吧,謝謝回復
    發表于 11-06 07:22

    java反編譯的代碼可以修改么

    Java反編譯是一種將編譯后的Java字節碼(.class文件)轉換回源代碼的過程。反編譯后的代碼可以進行修改,但是需要注意,反編譯代碼的質量和可讀性可能會受到原始編譯
    的頭像 發表于 09-02 11:00 ?640次閱讀

    hex可以轉成源代碼

    ,可以通過以下幾種方法嘗試獲取源代碼的近似形式: 反匯編 : 使用反匯編工具可以將Hex文件中的機器碼轉換回匯編語言。匯編語言是一種低級語言,它更接近于機器碼,但仍然具有一定的可讀性。 通過反匯編得到的匯編代碼可以提供程序
    的頭像 發表于 09-02 10:41 ?974次閱讀

    深入淺出系列之代碼可讀性

    ”,這是對我最大的鼓勵。 一、老生常談,到底啥是可讀性 一句話:見名知其義。有人說好的代碼必然有清晰完整的注釋,我不否認;也有人說代碼即注釋,是代碼簡潔之道的最高境界,我也不否認。但我
    的頭像 發表于 08-09 16:00 ?258次閱讀

    軟件設計哲學:新“代碼整潔之道”

    工作三年以來一直對寫出設計優雅且可讀性較好的代碼抱有執念,最初接觸到的關于代碼整潔和軟件設計的書是《代碼整潔之道》,這本書大概在我入職半年時讀完,并在很長的一段時間內將其中談到的“每個
    的頭像 發表于 07-22 12:18 ?236次閱讀
    軟件設計哲學:新“<b class='flag-5'>代碼</b>整潔之道”

    C語言編碼規范,這才是最理想的!

    編碼規范,沒有最好,只有最合適,有但不執行不如沒有。一、編碼原則01可讀性清晰第一清晰是易于維護程序必須具備的特征。維護期變更代碼的成本遠遠大于開發期,編寫程序應該以人為本,計算機第
    的頭像 發表于 07-06 08:11 ?817次閱讀
    C語言編碼規范,這才是最理想的!

    一站式統一返回值封裝、異常處理、異常錯誤碼解決方案—最強的Sping Boot接口優雅響應處理器

    1. 前言 統一返回值封裝、統一異常處理和異常錯誤碼體系的意義在于提高代碼的可維護可讀性,使得代碼更加健壯和穩定。統一返回值封裝可以避免每一個接口都需要手工拼裝響應報文;統一異常處
    的頭像 發表于 06-20 15:42 ?524次閱讀

    軟件架構搞好了,還用擔心代碼可讀性差?

    :硬件多樣:嵌入式系統常常面臨不同硬件平臺和設備的多樣,需要一個靈活的軟件架構來適應這些差異。軟件復雜:隨著嵌入式系統功能的不斷增加,軟件規模和復雜度也在增加
    的頭像 發表于 06-14 08:10 ?267次閱讀
    軟件架構搞好了,還用擔心<b class='flag-5'>代碼</b><b class='flag-5'>可讀性</b>差?

    探討AI編寫代碼技術,以及提高代碼質量的關鍵:靜態代碼分析工具Perforce Helix QAC &amp; Klocwork

    令軟件開發人員夜不能寐的事情比比皆是。如今,他們最關心的問題不再是如何用自己喜歡的語言(C、C++、Erlang、Java 等)表達最新的算法,而是人工智能(AI)。 本文中,我們將介紹AI編寫代碼
    的頭像 發表于 06-05 14:10 ?396次閱讀

    你是不是也沒躲過這個坑?用了太多全局變量......

    的弊端:01代碼可讀性差漫天全局變量,特別是各個源文件都有全部變量的情況下,代碼可讀性相信你都能明白有多差。如果再加上命名不規范、隨處定義,代碼
    的頭像 發表于 05-01 08:10 ?524次閱讀
    你是不是也沒躲過這個坑?用了太多全局變量......

    提高C代碼可讀性編寫技巧與策略

    指針是 C 語言的靈魂,是 C 比其他語言更靈活,更強大的地方。所以學習 C 語言必須很好的掌握指針。函數指針,即指向函數在內存映射中的首地址的指針,通過函數指針,可以將函數作為參數傳遞給另一個函數,并在適當的時候調用,從而實現異步通信等功能。
    發表于 04-23 18:25 ?491次閱讀

    如何提升嵌入式C語言代碼可讀性

    接口是面向對象語言中的一個比較重要的概念,接口只對外部承諾實現該接口的實體可以完成什么樣的功能,但是不暴露實現的方式。這樣的好處是,實現者可以在不接觸接口使用者的代碼的情況下,對實現進行調整。
    發表于 04-11 11:30 ?351次閱讀
    如何提升嵌入式C語言<b class='flag-5'>代碼</b><b class='flag-5'>可讀性</b>
    主站蜘蛛池模板: 久9青青cao精品视频在线| 国产精品亚洲精品日韩电影| aaaaaaa一级毛片| 柏木舞子在线| 国产成人片视频一区二区青青| 国产精品无码AV天天爽色欲| 狠狠色丁香婷婷久久综合五月| 久久精品国产久精国产果冻传媒| 美女被触手注入精子强制受孕漫画| 欧美性appstin孕妇| 四虎影院网红美女| 亚洲精品成人| 99国内精品| 国产激情视频在线观看| 九九九精品国产在线| 免费观看视频成人国产| 色呦呦人人视频| 一个人高清在线观看日本免费| 999久久狠狠免费精品| 国产成人无码免费精品果冻传媒| 吉吉影音先锋av资源网| 欧美白妞大战非洲大炮| 亚洲 日韩 自拍 视频一区| 最近日本字幕MV免费观看在线| yy4408午夜场理论片| 果冻传媒2021一二三区| 欧美成人国产| 亚洲欧美免费无码专区| AV天堂AV亚洲啪啪久久无码| 国产系列在线亚洲视频| 免费A级毛片无码无遮挡| 偷拍久久国产视频免费| 18和谐综合色区| 国产精品你懂的在线播放| 老师好爽你下面水好多视频| 十次啦中文网| 国产中的精品AV一区二区| 男女午夜性爽快免费视频不卡| 香蕉在线播放| WWW国产精品人妻一二三区| 精品手机在线视频|