0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

代碼即注釋?zhuān)⑨尲创a的概念是如何形成的

jf_GctfwYN7 ? 來(lái)源:芯時(shí)代青年 ? 2023-11-18 16:52 ? 次閱讀

"代碼即注釋?zhuān)⑨尲创a"這個(gè)概念是如何形成的呢?記得之前看一些討論,程序員應(yīng)該如何寫(xiě)代碼的注釋?zhuān)蠹业囊庖?jiàn)很多,不過(guò)我只對(duì)兩句話記憶非常深刻:

(代碼)既然難寫(xiě),就應(yīng)難讀。

代碼本身就是注釋。

根據(jù)這兩句話意見(jiàn)呢,我們的代碼本身并不需要太多的注釋內(nèi)容。而應(yīng)該盡可能的通過(guò)合理的模塊與函數(shù)劃分、明確的信號(hào)命名、清晰的邏輯表達(dá)來(lái)替代繁瑣的注釋說(shuō)明,同時(shí)再借助比較完備的文檔進(jìn)行代碼的傳接。更何況呢坊間一直有一句傳聞:代碼易,人可替(我剛編的哈哈哈),所以久而久之我就養(yǎng)成了不寫(xiě)注釋的好習(xí)慣。

俗話說(shuō),程序員都有兩個(gè)最大的厭惡:一是別人不寫(xiě)注釋?zhuān)莿e人讓自己寫(xiě)注釋。我估摸著哈,這都是和我一樣養(yǎng)成好習(xí)慣的盆友。不過(guò)不寫(xiě)注釋偶爾也會(huì)帶來(lái)一些惡果,最典型的就是隔一個(gè)月半個(gè)月要改自己的祖?zhèn)鞔a時(shí),得把代碼從頭理一遍的痛苦。當(dāng)然,代碼即注釋這句話不是本文的重點(diǎn),重點(diǎn)是后面的注釋即代碼。

注釋即代碼的思想是怎么來(lái)的呢?來(lái)自于兩個(gè)對(duì)本奪命腳本師影響頗深的事情。一件是verilog-mode的使用,這個(gè)工具的介入直接讓困擾我多年的模塊例化與互連問(wèn)題迎刃而解;另一件是前司開(kāi)發(fā)的RTL檢查工具,借助注釋生成的檢查代碼節(jié)約了驗(yàn)證大量的時(shí)間,因?yàn)槲易约菏球?yàn)證所以對(duì)此感受還是頗深的。腳本的目的無(wú)非是兩個(gè),提高效率與提高質(zhì)量,而以注釋生成代碼以小生多的思路,不僅大大的提升了工作的效率,也能夠保證生成代碼的高質(zhì)量,畢竟人會(huì)出錯(cuò)工具不會(huì)出錯(cuò)(除非是我自己和工具沖突了,此時(shí)必是工具有bug╭(╯^╰)╮)。

那么在樹(shù)立了注釋即代碼的思想后,我就沿著這個(gè)方向進(jìn)行了幾個(gè)腳本的開(kāi)發(fā)。

第一個(gè)是名叫g(shù)en_link的腳本,看這個(gè)名字就知道這是模仿verilog-mode中的自動(dòng)連線功能而開(kāi)發(fā)的RTL例化與互連工具。為什么會(huì)重復(fù)造輪子呢?說(shuō)來(lái)就比較曲折了,因?yàn)槲也恢纕erilog-mode是開(kāi)源的工具 ̄□ ̄||知道了這件事之后,我就轉(zhuǎn)而去研究了如何配置和使用該工具了,甚至還做了專(zhuān)欄。

第二個(gè)腳本是auto_assert,這個(gè)腳本和前司的借助注釋檢查代碼的工具思路是一致的,不過(guò)我在其中做了簡(jiǎn)化和一些功能的補(bǔ)充。最終完成的腳本能夠支持如下的功能:

1.信號(hào)的不定態(tài)檢查

2.信號(hào)在使能時(shí)的不定態(tài)檢查

3.仿真過(guò)程中信號(hào)的取值檢查

4.仿真過(guò)程中使能時(shí)信號(hào)的取值檢查

5.仿真過(guò)程中信號(hào)取值覆蓋率分析

6.仿真結(jié)束時(shí)信號(hào)結(jié)束值檢查

然后我就發(fā)現(xiàn)了這個(gè)腳本的致命問(wèn)題:這玩意會(huì)極大地增加設(shè)計(jì)的工作量!因?yàn)檫@個(gè)致命問(wèn)題的存在,后面雖然我還對(duì)其進(jìn)行了維護(hù),但是一般不會(huì)在工作中使用了,就算用也只用最基礎(chǔ)的不定態(tài)檢查和結(jié)束值檢查功能。

第三個(gè)腳本是auto_unfold,這個(gè)腳本的功能是對(duì)代碼中的相似代碼進(jìn)行循環(huán)展開(kāi),比如下面這種:

wKgZomVYe56ACfeNAAAZboLnnxc394.png

本來(lái)呢我以為這個(gè)是verilog-mode中的原生功能,后來(lái)才發(fā)現(xiàn)是前司內(nèi)部自己開(kāi)發(fā)的派生功能。然后我又沒(méi)有對(duì)其進(jìn)行進(jìn)一步開(kāi)發(fā)的能力,那能怎么辦呢?只好借助python開(kāi)發(fā)新的腳本然后嵌入到vim中了。

最后一個(gè)腳本是auto_dff,這個(gè)腳本我前幾天才寫(xiě)好的,寫(xiě)它的目的是啥呢?在前面的文章提到了dff例化風(fēng)格代碼,在實(shí)踐的過(guò)程中就會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,那就是每一個(gè)寄存器的例化和信號(hào)聲明寫(xiě)起來(lái)也是挺煩的。在某一個(gè)進(jìn)行進(jìn)行批量寄存器替換的夜晚,我突然感覺(jué)寫(xiě)這么多無(wú)效的寄存器代碼也非常的不能忍,所以開(kāi)發(fā)了這個(gè)腳本:

wKgaomVYe6uAFPvdAABWDbv8I54182.png

但是說(shuō)來(lái)非常的慚愧,寫(xiě)完這個(gè)腳本后我就很久沒(méi)有開(kāi)發(fā)代碼了,一直沒(méi)能好好的感受下效率提升的效果。

目前為止遵循“代碼即注釋?zhuān)瑪?shù)值即代碼”思路開(kāi)發(fā)的腳本就是這4個(gè),以后再慢慢增加吧。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68616
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    389

    瀏覽量

    14866
  • 注釋
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    6530

原文標(biāo)題:IC學(xué)霸筆記 | 代碼即注釋?zhuān)⑨尲创a

文章出處:【微信號(hào):IC修真院,微信公眾號(hào):IC修真院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    麻煩問(wèn)下keil選中代碼后快速注釋為何在代碼左邊出現(xiàn)注釋符號(hào)

    出現(xiàn)在左邊不就把代碼也都注釋掉了嗎,我想讓他出現(xiàn)在右邊這樣我寫(xiě)注釋就不會(huì)把代碼注釋
    發(fā)表于 01-15 16:44

    44B0啟動(dòng)代碼詳細(xì)注釋

    本內(nèi)容提供了44B0啟動(dòng)代碼的詳細(xì)注釋,希望對(duì)大家有用
    發(fā)表于 08-01 15:44 ?59次下載
    44B0啟動(dòng)<b class='flag-5'>代碼</b>詳細(xì)<b class='flag-5'>注釋</b>

    如何在代碼中添加注釋

    什么是代碼注釋,如何在代碼中添加注釋,相信每一位了解編程的人并不陌生。注釋里往往有很多有趣的腦洞和「真心話」
    的頭像 發(fā)表于 10-17 10:53 ?1.1w次閱讀

    python基礎(chǔ):如何注釋代碼

    ? ? ? 大家好,又到了每日學(xué)習(xí)的時(shí)間了,最近博主在和python打交道,今天我們來(lái)聊一聊python一些基礎(chǔ)的東西,如何注釋代碼塊。 ? ? ? ?前言 ? ? ? ?編寫(xiě)python程序有時(shí)候
    的頭像 發(fā)表于 12-26 22:03 ?5563次閱讀
    python基礎(chǔ):如何<b class='flag-5'>注釋</b><b class='flag-5'>代碼</b>塊

    用于代碼注釋生成的語(yǔ)法輔助機(jī)制設(shè)計(jì)

    現(xiàn)有代碼注釋生成方法的復(fù)制機(jī)制未考慮源代碼復(fù)雜多變的語(yǔ)法結(jié)構(gòu),導(dǎo)致存在準(zhǔn)確率和魯棒性不高等問(wèn)題。通過(guò)改進(jìn)指針網(wǎng)絡(luò)使其支持結(jié)構(gòu)化數(shù)據(jù)輸入,提出一種語(yǔ)法輔助復(fù)制機(jī)制,以用于代碼
    發(fā)表于 04-27 11:23 ?19次下載
    用于<b class='flag-5'>代碼</b><b class='flag-5'>注釋</b>生成的語(yǔ)法輔助機(jī)制設(shè)計(jì)

    JAVA連接Oracle數(shù)據(jù)庫(kù)實(shí)代碼+詳細(xì)注釋

    JAVA連接Oracle數(shù)據(jù)庫(kù)實(shí)代碼+詳細(xì)注釋(西工大現(xiàn)代電源技術(shù)考題)-該文檔為JAVA連接Oracle數(shù)據(jù)庫(kù)實(shí)代碼+詳細(xì)注釋簡(jiǎn)介文檔,是一份還算不錯(cuò)的參考文檔,感興趣的可以下載看看
    發(fā)表于 09-27 13:48 ?3次下載
    JAVA連接Oracle數(shù)據(jù)庫(kù)實(shí)<b class='flag-5'>代碼</b>+詳細(xì)<b class='flag-5'>注釋</b>

    嵌入式系統(tǒng)設(shè)計(jì)中的注釋和調(diào)試代碼

    使用 C++ 風(fēng)格的//注釋符號(hào)——,將//放在每行的開(kāi)頭——稍微好一點(diǎn),但應(yīng)用起來(lái)非常乏味,而且在刪除時(shí)也可能容易出錯(cuò)。
    的頭像 發(fā)表于 06-20 16:04 ?1070次閱讀
    嵌入式系統(tǒng)設(shè)計(jì)中的<b class='flag-5'>注釋</b>和調(diào)試<b class='flag-5'>代碼</b>

    python代碼中使用HTTP代理IP,demo注釋清晰

    如何再python代碼中使用HTTP代理IP。 以下代碼主要圍繞第一次接觸HTTP代理IP的python新手來(lái)寫(xiě)。(步驟注釋清晰) 直接把下面示例代碼中的HTTP代理API,替換成你后
    的頭像 發(fā)表于 08-04 15:40 ?1051次閱讀

    代碼編程規(guī)范之注釋風(fēng)格

    注釋的原則是有助于對(duì)程序的閱讀理解以及提供二次開(kāi)發(fā)所需文檔,注釋的方式有很多,但是業(yè)內(nèi)常用的規(guī)范是 Doxygen 代碼注釋規(guī)范。遵循原則為,說(shuō)明性文件、函數(shù)接口必須充分
    的頭像 發(fā)表于 02-15 15:01 ?1865次閱讀
    <b class='flag-5'>代碼</b>編程規(guī)范之<b class='flag-5'>注釋</b>風(fēng)格

    C語(yǔ)言中如何實(shí)現(xiàn)注釋

    在C語(yǔ)言中,注釋是用來(lái)增加代碼可讀性和注釋過(guò)程和功能的文本。C語(yǔ)言中支持兩種類(lèi)型的注釋:?jiǎn)涡?b class='flag-5'>注釋和多行
    的頭像 發(fā)表于 11-22 10:17 ?1277次閱讀

    c語(yǔ)言怎么把代碼全部注釋

    要將C語(yǔ)言代碼全部注釋掉,不讓代碼被編譯和執(zhí)行,可以使用注釋語(yǔ)句來(lái)實(shí)現(xiàn)。C語(yǔ)言提供兩種注釋方式
    的頭像 發(fā)表于 11-22 10:21 ?7260次閱讀

    devc怎么注釋掉一段代碼

    在DevC中,要注釋掉一段代碼,你可以使用注釋符號(hào)來(lái)標(biāo)記這段代碼。注釋符號(hào)的作用是告訴編譯器不要編譯這些
    的頭像 發(fā)表于 11-22 10:23 ?2503次閱讀

    c++多行注釋快捷鍵

    在C++中,多行注釋(也稱(chēng)為塊注釋)是一種用于注釋大段代碼或多個(gè)語(yǔ)句的方法。當(dāng)你希望暫時(shí)禁用一些代碼或者解釋特定部分
    的頭像 發(fā)表于 11-22 10:24 ?8467次閱讀

    vs中如何快速注釋多行代碼

    在VS中,快速注釋多行代碼可以通過(guò)以下幾種方法實(shí)現(xiàn)。我將詳細(xì)介紹每種方法的步驟和應(yīng)用場(chǎng)景。 方法一:塊注釋注釋是一種常見(jiàn)的注釋多行
    的頭像 發(fā)表于 11-22 10:26 ?1.6w次閱讀

    java中的注釋有三類(lèi)分別是

    在Java編程語(yǔ)言中,注釋是非常重要的一部分,它們提供了對(duì)代碼的解釋和說(shuō)明。注釋可以幫助開(kāi)發(fā)人員更好地理解代碼,使代碼更易于維護(hù)和理解。在J
    的頭像 發(fā)表于 11-28 16:47 ?1241次閱讀