0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

代码即注释,注释即代码的概念是如何形成的

jf_GctfwYN7 来源:芯时代青年 2023-11-18 16:52 次阅读

"代码即注释,注释即代码"这个概念是如何形成的呢?记得之前看一些讨论,程序员应该如何写代码的注释,大家的意见很多,不过我只对两句话记忆非常深刻:

(代码)既然难写,就应难读。

代码本身就是注释。

根据这两句话意见呢,我们的代码本身并不需要太多的注释内容。而应该尽可能的通过合理的模块与函数划分、明确的信号命名、清晰的逻辑表达来替代繁琐的注释说明,同时再借助比较完备的文档进行代码的传接。更何况呢坊间一直有一句传闻:代码易,人可替(我刚编的哈哈哈),所以久而久之我就养成了不写注释的好习惯。

俗话说,程序员都有两个最大的厌恶:一是别人不写注释,二是别人让自己写注释。我估摸着哈,这都是和我一样养成好习惯的盆友。不过不写注释偶尔也会带来一些恶果,最典型的就是隔一个月半个月要改自己的祖传代码时,得把代码从头理一遍的痛苦。当然,代码即注释这句话不是本文的重点,重点是后面的注释即代码。

注释即代码的思想是怎么来的呢?来自于两个对本夺命脚本师影响颇深的事情。一件是verilog-mode的使用,这个工具的介入直接让困扰我多年的模块例化与互连问题迎刃而解;另一件是前司开发的RTL检查工具,借助注释生成的检查代码节约了验证大量的时间,因为我自己是验证所以对此感受还是颇深的。脚本的目的无非是两个,提高效率与提高质量,而以注释生成代码以小生多的思路,不仅大大的提升了工作的效率,也能够保证生成代码的高质量,毕竟人会出错工具不会出错(除非是我自己和工具冲突了,此时必是工具有bug╭(╯^╰)╮)。

那么在树立了注释即代码的思想后,我就沿着这个方向进行了几个脚本的开发。

第一个是名叫gen_link的脚本,看这个名字就知道这是模仿verilog-mode中的自动连线功能而开发的RTL例化与互连工具。为什么会重复造轮子呢?说来就比较曲折了,因为我不知道verilog-mode是开源的工具 ̄□ ̄||知道了这件事之后,我就转而去研究了如何配置和使用该工具了,甚至还做了专栏。

第二个脚本是auto_assert,这个脚本和前司的借助注释检查代码的工具思路是一致的,不过我在其中做了简化和一些功能的补充。最终完成的脚本能够支持如下的功能:

1.信号的不定态检查

2.信号在使能时的不定态检查

3.仿真过程中信号的取值检查

4.仿真过程中使能时信号的取值检查

5.仿真过程中信号取值覆盖率分析

6.仿真结束时信号结束值检查

然后我就发现了这个脚本的致命问题:这玩意会极大地增加设计的工作量!因为这个致命问题的存在,后面虽然我还对其进行了维护,但是一般不会在工作中使用了,就算用也只用最基础的不定态检查和结束值检查功能。

第三个脚本是auto_unfold,这个脚本的功能是对代码中的相似代码进行循环展开,比如下面这种:

wKgZomVYe56ACfeNAAAZboLnnxc394.png

本来呢我以为这个是verilog-mode中的原生功能,后来才发现是前司内部自己开发的派生功能。然后我又没有对其进行进一步开发的能力,那能怎么办呢?只好借助python开发新的脚本然后嵌入到vim中了。

最后一个脚本是auto_dff,这个脚本我前几天才写好的,写它的目的是啥呢?在前面的文章提到了dff例化风格代码,在实践的过程中就会发现一个问题,那就是每一个寄存器的例化和信号声明写起来也是挺烦的。在某一个进行进行批量寄存器替换的夜晚,我突然感觉写这么多无效的寄存器代码也非常的不能忍,所以开发了这个脚本:

wKgaomVYe6uAFPvdAABWDbv8I54182.png

但是说来非常的惭愧,写完这个脚本后我就很久没有开发代码了,一直没能好好的感受下效率提升的效果。

目前为止遵循“代码即注释,数值即代码”思路开发的脚本就是这4个,以后再慢慢增加吧。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66766
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14635
  • 注释
    +关注

    关注

    0

    文章

    11

    浏览量

    6493

原文标题:IC学霸笔记 | 代码即注释,注释即代码

文章出处:【微信号:IC修真院,微信公众号:IC修真院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    麻烦问下keil选中代码后快速注释为何在代码左边出现注释符号

    出现在左边不就把代码也都注释掉了吗,我想让他出现在右边这样我写注释就不会把代码注释
    发表于 01-15 16:44

    注释那些事儿:前端代码质量系列文章(一)

    ,一旦代码需要修改,修改注释也会是一大负担。我们应当追求「代码注释」,代码本身就拥有较高的可
    发表于 04-27 16:21

    44B0启动代码详细注释

    本内容提供了44B0启动代码的详细注释,希望对大家有用
    发表于 08-01 15:44 59次下载
    44B0启动<b class='flag-5'>代码</b>详细<b class='flag-5'>注释</b>

    如何在代码中添加注释

    什么是代码注释,如何在代码中添加注释,相信每一位了解编程的人并不陌生。注释里往往有很多有趣的脑洞和「真心话」
    的头像 发表于 10-17 10:53 1w次阅读

    python基础:如何注释代码

          大家好,又到了每日学习的时间了,最近博主在和python打交道,今天我们来聊一聊python一些基础的东西,如何注释代码块。        前言        编写python程序有时候
    的头像 发表于 12-26 22:03 5150次阅读
    python基础:如何<b class='flag-5'>注释</b><b class='flag-5'>代码</b>块

    用于代码注释生成的语法辅助机制设计

    现有代码注释生成方法的复制机制未考虑源代码复杂多变的语法结构,导致存在准确率和鲁棒性不高等问题。通过改进指针网络使其支持结构化数据输入,提出一种语法辅助复制机制,以用于代码
    发表于 04-27 11:23 19次下载
    用于<b class='flag-5'>代码</b><b class='flag-5'>注释</b>生成的语法辅助机制设计

    JAVA连接Oracle数据库实代码+详细注释

    JAVA连接Oracle数据库实代码+详细注释(西工大现代电源技术考题)-该文档为JAVA连接Oracle数据库实代码+详细注释简介文档,是一份还算不错的参考文档,感兴趣的可以下载看看
    发表于 09-27 13:48 3次下载
    JAVA连接Oracle数据库实<b class='flag-5'>代码</b>+详细<b class='flag-5'>注释</b>

    代码编程规范之注释风格

    注释的原则是有助于对程序的阅读理解以及提供二次开发所需文档,注释的方式有很多,但是业内常用的规范是 Doxygen 代码注释规范。遵循原则为,说明性文件、函数接口必须充分
    的头像 发表于 02-15 15:01 1224次阅读
    <b class='flag-5'>代码</b>编程规范之<b class='flag-5'>注释</b>风格

    C语言中如何实现注释

    在C语言中,注释是用来增加代码可读性和注释过程和功能的文本。C语言中支持两种类型的注释:单行注释和多行
    的头像 发表于 11-22 10:17 636次阅读

    c语言怎么把代码全部注释

    要将C语言代码全部注释掉,即不让代码被编译和执行,可以使用注释语句来实现。C语言提供两种注释方式:单行
    的头像 发表于 11-22 10:21 2329次阅读

    devc怎么注释掉一段代码

    在DevC中,要注释掉一段代码,你可以使用注释符号来标记这段代码注释符号的作用是告诉编译器不要编译这些
    的头像 发表于 11-22 10:23 1069次阅读

    c++多行注释快捷键

    在C++中,多行注释(也称为块注释)是一种用于注释大段代码或多个语句的方法。当你希望暂时禁用一些代码或者解释特定部分
    的头像 发表于 11-22 10:24 2794次阅读

    vs中如何快速注释多行代码

    在VS中,快速注释多行代码可以通过以下几种方法实现。我将详细介绍每种方法的步骤和应用场景。 方法一:块注释注释是一种常见的注释多行
    的头像 发表于 11-22 10:26 8142次阅读

    java中的注释有三类分别是

    在Java编程语言中,注释是非常重要的一部分,它们提供了对代码的解释和说明。注释可以帮助开发人员更好地理解代码,使代码更易于维护和理解。在J
    的头像 发表于 11-28 16:47 767次阅读

    Java提供了哪些注释语句

    comments): 单行注释以双斜杠(//)开头,可以在代码的任何位置使用。它们是用来提供对代码的短暂解释或调试信息的,不会对程序的运行产生任何影响。示例如下: // 这是一个单行注释
    的头像 发表于 11-28 16:56 363次阅读