<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          改善代碼可讀性的5種方法

          共 2901字,需瀏覽 6分鐘

           ·

          2021-01-15 20:49

          數(shù)學(xué)算法俱樂部

          日期?:?2021年01月15日?? ? ??

          正文共?:2269

          來源?:?infoQ
          本文最初發(fā)布于 byrayray.dev 網(wǎng)站,經(jīng)原作者授權(quán)由 InfoQ 中文站翻譯并分享。
          在本文中,我會列舉五條提高代碼可讀性的原則。這些原則是我在各種項目、團隊和組織的實踐中總結(jié)出來的經(jīng)驗。我希望大家可以從這篇文章中學(xué)到一些東西,從而提高代碼的可讀性。
          ?太長不看版
          總有人不喜歡從頭到尾看完全文,而是想趕快看完重點,這里為此準備了太長不看版:
          1. 重用會多次使用的內(nèi)容。

          2. 避免針對可讀性和可維護性制定一個通行的解決方案。

          3. 盡可能減小模塊、類或組件的大小。

          4. 為你的代碼自動化執(zhí)行一些規(guī)則和準則。

          5. 就算你的團隊只有你一個人,也要像是在多人團隊中一樣編寫便于協(xié)作的代碼。

          1. 重用會多次使用的內(nèi)容
          大多數(shù)開發(fā)人員都知道 D.R.Y. 是什么意思(避免重復(fù)代碼)。D.R.Y. 可以幫助你預(yù)防代碼重復(fù)的問題。
          為什么一個函數(shù)要寫一遍又一遍呢?你應(yīng)該只編寫一次,然后在需要它的各個位置重復(fù)使用它。而且如果你需要更改它的代碼,就只需要改動一處位置就可以了,用不著把修改好錯誤的版本復(fù)制粘貼到各個地方。
          但請注意,D.R.Y. 原則會讓你引入復(fù)雜性。因為到最后,事物被重用的次數(shù)會越來越多。
          當你開始更改被多次重用的代碼時,針對這部分代碼編寫測試的重要性就會充分體現(xiàn)出來了。
          2. 避免針對可讀性和可維護性制定通行的解決方案

          可重用性、可讀性和可維護性彼此之間既是朋友也是敵人。當你開始在自己的代碼中踐行 D.R.Y. 原則,你就會引入復(fù)雜性。當你引入復(fù)雜性時,可讀性水平可能就會下降了。
          因此,在構(gòu)建功能時不要想著先做一個通行的解決方案。從簡單入手是最好的!第一次嘗試肯定沒法做到盡善盡美。
          通過多次迭代,你就可以在重用應(yīng)用程序很多部分的同時,仍然保持不錯的可讀性和可維護性。
          當你在擁有許多開發(fā)團隊的組織中工作時,你的團隊可能會分為內(nèi)部人員和外部人員(例如自由職業(yè)者或顧問)。因此在這種情況下,人們會經(jīng)常在不同組織之間來回切換。
          在這些場景中,可讀性和可維護性是成功的關(guān)鍵。讓那些很可能隨時離開團隊的人員來制定通行的解決方案,并不是一個明智的選擇。
          在某些情況下,你的確需要通行方案,但這些方案必須做到很容易閱讀和維護。
          3. 盡可能減小模塊、類或組件的大小
          在為一款應(yīng)用程序構(gòu)建一些新功能時,你可能會在構(gòu)建前作詳細的規(guī)劃。
          最佳的解決方案肯定是能拆分成許多較小的模塊、類或組件的。你想知道為什么嗎?
          因為小段代碼更容易測試和維護。
          想象一下,人們在現(xiàn)實中搭建高層建筑時,也是從一個個較小的單元開始拼裝而成的,而不是一下子就把整幢大樓都造好,然后設(shè)法安裝到地基上。當然了,例外也是有的。
          大多數(shù)現(xiàn)代庫和框架都分成了一些較小的構(gòu)造塊,而不是打包成單個文件。像 Angular、React 和 Vue 這樣的 JavaScript 庫和框架都采用了組件的概念。我認為他們的選擇并不是無意識的結(jié)果。
          4. 為你的代碼自動化執(zhí)行一些規(guī)則和準則
          想要編寫出可讀和可維護的代碼,一方面要關(guān)注的是代碼的架構(gòu),另一方面則要關(guān)注代碼的樣式。
          我想很多讀者都經(jīng)常會見到關(guān)于制表符或空格縮進的討論。不過這里我不會討論這個話題。無論你在團隊中使用的是哪種方案,請確保所有團隊成員都遵守它就行了。
          最好的解決方案是,盡可能讓這些代碼樣式規(guī)則和準則自動化。許多 IDE 都集成了這種功能,或者可以通過插件安裝。
          最簡單的一種,也是支持多種語言和代碼編輯器的方案是 editorconfig。只要添加一個.editorconfig,就可以應(yīng)用這些規(guī)則。
          https://editorconfig.org/
          你可以在這些文件中為你的項目調(diào)整許多設(shè)置。你也可以指定全局設(shè)置方案,或者為特定的語言指定設(shè)置。例如:
          • 縮進樣式:制表符或空格

          • 引號類型:單引號或雙引號

          • 最大長度

          • 字符集

          • 還有更多……

          下面是我在自己的一個項目中指定的配置:
          # Editor configuration, see https://editorconfig.orgroot = true[*]charset = utf-8indent_style = spaceindent_size = 2insert_final_newline = truetrim_trailing_whitespace = true[*.ts]quote_type = single[*.md]max_line_length = offtrim_trailing_whitespace = false
          網(wǎng)絡(luò)上還有許多適用于某些特定語言的工具。對于 JavaScript 來說,我喜歡使用 Prettier,但你可能希望換一些不一樣的工具。
          https://medium.com/better-programming/eslint-vs-prettier-57882d0fec1d
          不管怎樣,只要參與項目的所有人都遵循相同的規(guī)則和準則,那么具體使用哪一種方案并不重要。
          5. 就算只有你一個人,也要像在多人團隊中一樣編寫代碼
          最后一點也是非常重要的,那就是永遠都像在團隊中一樣編寫便于協(xié)作的代碼!
          我可以想象,從未在團隊中編寫過代碼的開發(fā)人員是很難理解這一條原則的。
          可是如果你在一個人編寫項目,就會很容易寫出來很多只有你自己才能理解的代碼(例如編寫模糊不清的變量名、使用 2-3 個字符的變量名等等)。
          應(yīng)該試著像在團隊中一樣編寫能方便他人理解的代碼。想象一下,這就是說你的代碼應(yīng)該足夠清晰明了,讓其他人可以輕松理解。
          你可以問一問朋友,或者在開發(fā)者社區(qū)中通過 Twitter 找什么人過來幫你檢查代碼的可讀性,這是很簡單的測試方法。我可以保證,你會得到自己意想不到的反饋。
          不要擔(dān)心負面反饋!你只要關(guān)注那些可以讓你的代碼對其他人更具可讀性的反饋意見就行了。
          你應(yīng)該知道,可讀代碼與讀起來略吃力的代碼之間并沒有很清晰的界限,不同人會在這個問題上有不同的看法。如果有人告訴你你的代碼很難讀,那也不要難過!你應(yīng)該感謝對方的反饋意見。
          小結(jié)
          感謝大家的閱讀!希望你從本文中起碼能學(xué)到一點東西。
          如果你對提高代碼可讀性的方法有任何補充,請隨時在評論中分享你的想法。
          你想輕松學(xué)習(xí) JavaScript 嗎?我正在開發(fā)一個項目,希望能教你輕松入門 JavaScript,讓你可以構(gòu)建自己的交互式 ui 組件。
          https://t.co/SR5YLpSujB?amp=1


          —?THE END —


          ?從輸入 URL 到頁面加載完成的過程中都發(fā)生了什么事情?
          ?如何向5歲小孩解釋什么是支持向量機(SVM)?
          ?代數(shù)、幾何、分析 各自的范疇
          ?7年賺的2個億,數(shù)學(xué)家6年就花光了,全砸在自家的房子上
          ?把這種瓷磚鋪滿世界,圖案也不會重復(fù)
          ?震驚!余弦定理和勾股定理竟然有這樣的關(guān)系!
          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  最近中文字幕免费MV第二季歌词 | а√资源新版在线天堂 | 欧美wwwxxx | 亚洲第一页在线 | 伊人国产女 |