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

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

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

3天內不再提示

詳談命令式代碼和聲明式代碼的區別和編碼風格

如意 ? 來源:今日頭條 ? 作者:杭州程序員小張 ? 2020-09-04 10:54 ? 次閱讀

你的日常工作中應該使用哪種編碼風格?讓我們討論一下你應該選擇哪個以及為什么。

在日常工作中,你應該努力實現什么樣的編碼方式?

這是一個在編程中不常被問到的問題,但這是一個重要的問題。

首先讓我們來談談你在整個編程生涯中想要避免的一種編碼風格,無論你只是為自己或為他人編寫代碼。

什么是命令式和聲明式代碼?

我們可以把我們寫代碼的方式歸為傾向于兩種風格中的一種。

要說明的是,一個人的代碼從來不會嚴格地歸為一類或另一類,但它是一種有用的方式,指的是我們的代碼方式,根據誰或什么最適合。

編寫的代碼有兩種,稱為命令式代碼或聲明式代碼。這些聽起來很復雜的詞代表了非常簡單的概念:命令式代碼是指我們編寫的代碼更適合計算機,而聲明式代碼是指對人更容易讀懂的代碼。

更具體地說,命令式代碼是指我們告訴JavaScript(或任何你正在編碼的語言)要做什么以及如何做。

命令式代碼以及為什么應避免使用它

命令式編碼是你應該避免的一種樣式。

假設我們有很多人想寫一個生日派對的邀請。先創建我們的人員列表。

接下來,我們也要保存每個書面邀請,因此我們為要放置的邀請函(invitations)創建一個邀請數組。

詳談命令式代碼和聲明式代碼的區別和編碼風格

你可能已經猜到了,我們需要遍歷此數組以實現我們的目標。首先,我們將按照JavaScript生命周期中大部分時間都需要使用的方式:使用for循環。如下:

詳談命令式代碼和聲明式代碼的區別和編碼風格

根據我提到的步驟,我們要對一個數組進行循環(迭代),得到每一個元素,一個人的名字,我們將其添加到一個消息(上面的字符串)中,然后將其添加到一個新的數組中。

但是代碼講的是同樣的故事嗎?

如果我們要讀這段代碼,我們是將一個變量 i 設置為0,檢查它是否小于數組的當前長度,在 i 上加1,將數組的第 i 個值賦值為一個字符串,并將其放在新數組的相同索引中。

這些都是必須的,我們告訴JavaScript做什么和怎么做。所有這些代碼都是正確的。

如果我們運行它,我們將收到所有消息,就像我們想要的一樣。

然而,你對這段代碼的第一直覺(就像我們許多人第一次看到for循環一樣)可能是它看起來不太對。

盡管如此,它無疑是該語言生命周期中最流行的遍歷數組的方式。然而,閱讀和記憶是必要的和具有挑戰性的。

聲明式代碼以及為什么要以聲明式風格編寫

如果我們以聲明性的方式編寫它,那會是什么樣?

聲明式代碼則不同。正如名稱所示,我們用它來聲明我們想要完成的內容,JavaScript會完成它——就這么簡單。

換句話說,它對我們人類是可讀的,而不僅僅是對計算機。事實上,它對其他開發者的可讀性正是我們試圖用更多的聲明式寫作所追求的。

讓我們用一種你可能一開始就想使用的風格重寫我們的代碼,如果你熟悉很多JavaScript有用的數組方法的話。

這是為一系列人員創建一系列邀請的一種(多種)聲明式方法。

const invitations = people.map((person) =》 `Hi ${person}, come to my party!`);

這一切都在一條線上,但同時也更容易理解。它更加簡潔,易于書寫(和記憶),同時又非常清晰。

這就是追求聲明式代碼風格所能提供的。

與第一個例子不同的是,我們不需要創建任何混亂的變量(如 i),也不需要告訴JavaScript如何通過數組。我們只需對數組進行映射(或迭代),將每個人的名字添加到我們的邀請函中,然后返回給我們。

最后

那么我們想用哪種方式編寫代碼?

讓我們回顧一下我們的示例:特別是當我們第一次查看這段代碼時,什么更容易理解?什么更令人難忘?

隨著時間的推移,我們都不得不回顧如何編寫for循環,因為這是必要的。為了我們和其他人,聲明式風格是我們想要追求的。這看似一個令人困惑的概念,但是我們之所以要區分,是因為一個重要原因:我們編寫代碼的方式應該是為閱讀和使用代碼的人量身定做的,而不是計算機。

仔細檢查和重讀你的代碼,以確保其可讀性和理解性,就像你寫一篇文章一樣,你希望每個人都能理解你的代碼,甚至是非程序員,并努力使你的代碼更具聲明式的做法。

它不僅能幫助周圍的人,還能幫助你自己,尤其是當你在多年后重新審視代碼時,你早已忘記了它的作用。
責編AJX

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

    關注

    14

    文章

    409

    瀏覽量

    35793
  • 命令
    +關注

    關注

    5

    文章

    683

    瀏覽量

    22011
  • 源代碼
    +關注

    關注

    96

    文章

    2945

    瀏覽量

    66730
收藏 人收藏

    評論

    相關推薦

    養成良好的嵌入C代碼編碼習慣要遵循哪些規則?

    養成良好的嵌入C代碼編碼習慣要遵循哪些規則?Cortex-M這類微控制器編程通常采用C代碼,那么編程人員如何編寫代碼才能讓C編譯器產生高質
    發表于 04-04 17:14

    嵌入工程師是如何養成良好的C代碼編碼習慣?

    。2)避免使用大的聚合類型(比如結構體)作為參數或者返回類型。為了節省棧空間,我們應該更多的使用指針來代替這種聚合類型。三、函數原型有兩種函數的定義和聲明方式可以使用。一種是原型風格,一種
    發表于 09-04 07:30

    Linux內核編碼風格(編程代碼風格推薦)

    編碼素質的重要性。相反沒有良好的風格代碼讀起來難看、晦澀,甚至有時候一個括號沒對齊就能造成對程序的曲解或者不理解。我曾經就遇見過這樣的情況,花費了很多不必要的時間在程序的上下文對照上,還debug了
    發表于 08-24 09:45

    Hello HarmonyOS學習筆記:分布新聞客戶端實戰(JS、eTS)

    手動查找ID,響應和聲明是自動的2、代碼量逐漸變少由此可見,使用聲明UI可有效減少
    發表于 06-23 20:08

    Altera代碼風格講義--作者:駿龍小馬

    一個講解Altera代碼風格的講義,適合初學者看看,verilog的代碼風格
    發表于 11-17 18:07 ?0次下載

    基于棧編碼的惡意代碼分類算法

    針對傳統機器學習方法不能有效地提取惡意代碼的潛在特征,提出了基于棧編碼( stacked auto en-coder,SAE)的惡意代碼分類算法。其次從大量訓練樣本中學習并提取惡意
    發表于 01-16 17:19 ?0次下載
    基于棧<b class='flag-5'>式</b>自<b class='flag-5'>編碼</b>的惡意<b class='flag-5'>代碼</b>分類算法

    嵌入代碼之編寫規范

    嵌入代碼編碼規范,用于規范自己的代碼,增強可讀性,非標準規范。最好能強制自己形成良好的編碼風格
    的頭像 發表于 04-26 15:21 ?5273次閱讀

    增量編碼器與絕對編碼器的區別

    本文主要闡述了增量編碼器與絕對編碼器的區別
    的頭像 發表于 11-06 14:56 ?6.3w次閱讀

    關于Linux的內核代碼風格

    從而導致的問題。因為當時代碼量不大,所以解決問題的時間相對較少。在代碼量增大的情況下可以借助工具進行自動修改。 快速修改編碼風格的工具 scripts/checkpatch.pl 這是
    的頭像 發表于 04-25 14:50 ?1803次閱讀

    如何修改Linux內核代碼風格

    編碼風格錯誤開始 快速修改編碼風格的工具 scripts/checkpatch.pl scripts/Lindent astyle Linux 內核
    的頭像 發表于 05-13 11:27 ?1679次閱讀

    剖析什么是C語言中的隱函數聲明

    「1、什么是C語言的隱函數聲明」 在C語言中,函數在調用前不一定非要聲明。如果沒有聲明,那么編譯器會自動按照一種隱
    的頭像 發表于 05-25 09:38 ?3809次閱讀
    剖析什么是C語言中的隱<b class='flag-5'>式</b>函數<b class='flag-5'>聲明</b>

    C語言代碼風格

    個人代碼風格記錄此文將看到的一些好的代碼風格規范總結起來,作為自己以后寫代碼時的參考。命名業界流行的3種命名
    發表于 01-13 13:13 ?1次下載
    C語言<b class='flag-5'>代碼</b><b class='flag-5'>風格</b>

    什么樣的Verilog代碼風格是好的風格

    代碼是給別人和多年后的自己看的。 關于Verilog代碼設計的一些風格和方法之前也寫過一些Verilog有什么奇技淫巧?
    的頭像 發表于 10-24 15:23 ?1525次閱讀

    Verilog編碼風格的建議

    良好的編碼風格,有助于代碼的閱讀、調試和修改。雖然 Verilog 代碼可以在保證語法正確的前提下任意編寫,但是潦草的編碼
    的頭像 發表于 06-01 16:27 ?713次閱讀
    Verilog<b class='flag-5'>編碼</b><b class='flag-5'>風格</b>的建議

    光纖絕對和光纖增量編碼器的區別

    絕對編碼器和增量編碼器二者有什么區別呢?分別有什么特征,適合什么樣的應用呢?歡迎閱讀文章了解~
    的頭像 發表于 05-15 10:43 ?426次閱讀
    光纖絕對<b class='flag-5'>式</b>和光纖增量<b class='flag-5'>式</b><b class='flag-5'>編碼</b>器的<b class='flag-5'>區別</b>
    主站蜘蛛池模板: 久久亚洲成a人片| 色小说在线| 欧美日韩一区在线观看| 琪琪电影午夜理论片YY6080| 校花在公车上被内射好舒服| 久久精品国产亚洲精品2020| 农村脱精光一级| 伊人久99久女女视频精品免| 国产精自产拍久久久久久蜜| 无码射肉在线播放视频| 国产 高清 无码 在线播放| 日本xxx片免费高清在线| caoporn免费视频在线| 久久中文字幕乱码免费| 洗濯屋H纯肉动漫在线观看 | 亚洲欧美中文日韩视频| 高清大胆欧美videossexo| 日本免费一区二区三区四区五六区 | 2018年免费三级av观看| 成人在无码AV在线观看一| 精品一二三区久久AAA片| 轻轻挺进女教师的身体| 一级做a爰片久久毛片潮喷动漫| 国产99r视频精品免费观看| 免费观看桶机十分钟| 亚洲女人网| 国产AV无码熟妇人妻麻豆| 欧美激情社区| 9久久免费国产精品特黄| 辣文肉高h粗暴| 在线看片福利无码网址| yellow高清免费观看日本| 久久电影精品| 亚洲午夜性春猛交XXXX| 好湿好滑好硬好爽好深视频| 日本无卡无吗在线| 亚洲精品自在线拍2019| 乱xxxjapanese黑人| 亚洲第一区欧美日韩精品| 国产成人高清视频| 三级成人电彭|