广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >关于代码注释的理解
  • 268
分享到

关于代码注释的理解

2024-04-02 19:04:59 268人浏览 薄情痞子
摘要

本篇内容介绍了“关于代码注释的理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在一次研发沟通会上,大家关

本篇内容介绍了“关于代码注释的理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在一次研发沟通会上,大家关于是否需要代码注释做了一番争执(讨论)。

主要内容简述如下:

A:我提议项目应该有个注释,我们有些程序员几乎从不注释代码,谁都知道没注释的代码是没法阅读的。

B:我觉得注释没必要,注释被当做万灵药,可是任何实际编码过的人都知道,注释反而会使代码更难读懂。注释很容易产生大量的废话,而编码语言相对简明扼要得多。

C:是这么回事。假如代码不清晰,又怎能注释的清楚呢?再说,代码一变,注释就过时。要是误读了过时的注释,可能又会踩坑了。

C 接着说:另外,注释过多的代码更难读懂,这样增大了阅读量。已经有一堆代码要去读了,何必再去读一大堆注释呢?

A:编辑器要知道的东西全在代码中?二进制文件里面吗?争论注释有无价值干啥呢?

B:我反对注释主要是觉得浪费资源。

D:也不能这么说,注释可能会被滥用,但是注释用得好时却妙不可言。另外,在我的工作经历中,有注释和没注释的我都维护过,我个人还是更愿意维护有注释的代码。最后补一句:尽管没必要制定注释的标准,但是我还是提倡大家注释好自己的代码。

........

关于是否加注释争执讨论比较久,最终大家统一了如下决定:

“提倡加注释,但不能滥用。我们开发流程中会有Code  Review过程,这样每个人都将了解好的注释是什么样的,同时你遇到不好的代码注释,也需要告诉他如何改进。”

问题思考

作为研发同学,对于代码“注释”其实并不陌生。它往往作为我们代码文档的特殊补充而存在。

其实在代码文档中,起主要作用的因素并非注释,而是好的编程风格。

编程风格包括:良好的程序结构、易于理解的方法、有意义的变量名和子程序名、常量、清晰的布局,以及最低复杂度的控制流及数据结构

会后我就在反思:那注释真的是以啰嗦的方式又重复一遍代码,所以没有用么?

好注释可不是重复代码或者解释代码,它会让作者的意图更清晰,注释应该能在更高的意图上解释你想干什么。

日常的注释

一般情况下,注释写的糟糕很容易,写的出色就很难了。注释不好只会帮倒忙。

我们来看几个例子:

// write out the sums 1..n for all n from 1 to num current = 1; previous = 0; sum = 1; for(int i=0; i<num; i++){   System.out.Println("Sum = " + sum);   sum = current + previous;   previous = current;   current = sum; }

其实这段代码计算的是斐波那契(Fibonacci)数列的前num个值。如果注释错了,盲目相信注释可能会南辕北辙,但是好的注释会事半功倍。

// compute the square root of num using the Newton-Raphson approximation r = num / 2; while(abs(r - (num/r) > TOLERANCE){   r = 0.5 * (r + (num/r)); } System.out.println("r = " + r);

上述例子,它用来计算num的平方根,代码一般,但注释比较精准。

注释的目的

写代码和注释的第一目的是帮助人理解代码,理解作者的意图。

所以优秀的代码本身就有自说明功能,只有在代码本身无法清晰地阐述作者的意图时,才考虑写注释。

即是:注释应该表达我的代码为什么要这么做,而不是表达我的代码做了什么。

我们软件开发过程中引入了那么多的设计模式框架、组件,开发过程制定了那么详细的设计规范、编码规范、命名规范、很大一部分原因就是为了提高代码的可读性。

编程语言特别是高级编程语言,本身就是人和机器之间沟通的语言,语言本身就要求满足人的可读性,需要用符合我们自然语言的表达习惯,不需要额外的注释。

注释怎么写?

当然,好代码 > 差代码+好注释,好的注释是很有价值的,坏注释不仅浪费时间还可能有害,自解释的代码最好。

当然,好代码 >  差代码+好注释,好的注释是很有价值的,坏注释不仅浪费时间还可能有害,自解释的代码最好。好的注释不是重复代码或解释它,而是使代码更清楚,注释在高于代码的抽象水平上解释代码要做什么事。

具体的操作手段,包括但不限于以下几点:

  • 适当注释,仔细衡量,不要隐晦也不要多余;

  • 注意存在变更情况是,需要及时更新;

  • 注释代码中一些tricky的技巧或者特殊的业务逻辑,否则会让读代码的人摸不着头脑;

  • 如果附上jira、bug、需求等的地址能够帮助理解代码,可以适当加上;

  • 如果代码命名良好,结构合理,一般来说是不需要什么注释的。但是用一句话解释下意图和功能也是极好的,因为很多时候仅仅是想知道代码怎么用,读一句注释要比分析几十行代码快得多。

注释的原则

1)写注释应遵循奥卡姆剃刀原则:如无必要,勿增实体

注释写的不好、维护得不好(比如改了代码没改注释)会导致代码的可读性变差。

2)有句话叫“代码即注释”,虽然不完全是,但有道理的

把代码写好、写漂亮,注释就可以精炼,也必然能写得更易懂。此外,把思路(难的、关键的)写清楚,比啥Author、Date重要多了。抓重要信息。

3)建议注释里尽量写为什么,而不是做了什么

做了什么,看代码就好,代码不会骗人。但为什么要写成这样,有时候就非常让人困惑。有可能是处理某个corner  case,有可能是绕过某个系统限制,也可能是什么奇葩需求,这种代码,没有当时的  context,过几个月看,像甲骨文一样,不知道是想干什么。再有看不顺眼来优化一下,以后就不知道哪个地方会崩了。

其实,大部分的代码应当是不言自明的,不需要注释的。

总结

  • 好的注释才有价值

该不该注释是个需要认真对待的问题。差劲的注释只会浪费时间。好的注释才有价值。注释的位置可以在:变量特定的含义和限制、某个职责代码块的开始、一般控制结构的开始、子程序调用处、方法开始处描述功能、类开始处描述功能。

  • 源代码应当含有程序大部分的关键信息。

只要程序依然在用,源代码比其他资料都能保持更新,故而将重要信息融入代码是很有好处的。

  • 好代码本身就是最好的说明

如果代码太糟,需要大量注释,应先试着改进代码,直至无须过多注释为止。

  • 注释应说出代码无法说出的东西

例如概述或用意等信息。注释本身应该包含的是对代码的简洁的抽象概括,而不是具体代码的实现细节。

  • 注释风格也应该简洁易于维护

有的注释风格需要许多重复性劳动,应舍弃之,改用易于维护的注释风格。

“关于代码注释的理解”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 关于代码注释的理解

本文链接: https://www.lsjlt.com/news/83456.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于代码注释的理解
    本篇内容介绍了“关于代码注释的理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在一次研发沟通会上,大家关...
    99+
    2022-10-19
  • 关于Mybatis的sql注释问题
    Mybatis的sql注释 //mapper下的sql注释 package com.msb.mapper; import com.msb.pojo.Dept; import com.msb.pojo.Emp; impor...
    99+
    2022-06-13
    Mybatissql注释 Mybatis注释
  • PHP中的代码注释
    代码注释是程序员在编写代码时添加的文本提醒,以便自己和其他程序员更轻松地阅读和理解代码。在PHP中,代码注释是不可或缺的。本文将详细介绍PHP中的代码注释的类型、规范和用途。一、PHP中的代码注释类型在PHP中,有三种类型的注释:单行注释、...
    99+
    2023-05-23
    PHP注释 代码注释 文档注释
  • 关于 Order by 2的解释
     Order by 2表示对要查询的第二个字段进行排序,如下例子: Select number,name From Student Order by 2 #相当于 Select number,name From ...
    99+
    2020-10-06
    关于 Order by 2的解释
  • 关于Swagger注释API的使用说明
    目录API详细说明示例@ApiImplicitParamparamType 示例详解接收对象传参的例子API详细说明 注释汇总 作用范围API使用位置对象属性@ApiModelPro...
    99+
    2022-11-13
  • c++代码各种注释示例详解
    目录1、前言2、正文(危)1.以代码例子为例(1)代码段1(2)代码段2(3)代码段3(4)代码段42.其它的注释方法(1)条件编译(2)if条件1、前言 今天想带大家来了解一下注释...
    99+
    2022-11-12
  • HTML中的代码怎么注释
    这篇文章给大家分享的是有关HTML中的代码怎么注释的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   HTML注释   在HTML代码中,<!--和-->标签之间...
    99+
    2022-10-19
  • 如何理解代码注释是程序员必备技能
    这篇文章主要介绍“如何理解代码注释是程序员必备技能”,在日常操作中,相信很多人在如何理解代码注释是程序员必备技能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解代码注释...
    99+
    2022-10-19
  • 关于feign接口动态代理源码解析
    目录feign接口动态代理源码解析@FeignClinet代理类注册feign源码解析Feign的作用源码及流程介绍feign接口动态代理源码解析 @FeignClinet 代理类注...
    99+
    2022-11-13
  • php代码注释的风格有哪些
    本文小编为大家详细介绍“php代码注释的风格有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“php代码注释的风格有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php提供了3种代码注释的风格,分别是:1...
    99+
    2023-06-29
  • 基于GPT-4编写、解释代码的新一代编辑器Cursor
    上周,Open AI 团队正式宣布:GPT-4 来了! GPT-4 的出现,随后 Microsoft 的多个产品就集成了 GPT-4。 紧接着基于 Open AI 公司发布的 GPT...
    99+
    2023-03-22
    cursor编辑器 集成GPT4的Cursor编辑器 cursor编辑器怎么使用
  • mybatis代码生成+自定义注解+自定义注释实例
    目录mybatis代码生成配置文件配置类自定义的lombok注解配置代码注释配置mybatis代码生成 <!--mybatis的包和反向生成的包__用来生成...
    99+
    2022-11-12
  • yolov5中train.py代码注释详解与使用教程
    目录前言1. parse_opt函数2. main函数2.1 main函数——打印关键词/安装环境2.2 main函数——是否进行断点...
    99+
    2022-11-11
  • mySql创建带解释的表及给表和字段加注释的实现代码
    1、创建带解释的表 CREATE TABLE test_table(   t_id INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT "设置主键自增",   t_name VARCHAR(64...
    99+
    2016-03-23
    mySql创建带解释的表及给表和字段加注释的实现代码
  • golang中的代码注释有什么作用
    这篇文章主要介绍了golang中的代码注释有什么作用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang中的代码注释有什么作用文章都会有所收获,下面我们一起来看看吧。一、注释的作用在代码编写中,注释起着非...
    99+
    2023-07-05
  • Java中代码注释的规范有哪些
    Java中代码注释的规范有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率。...
    99+
    2023-05-31
    java 代码注释 ava
  • aspectjweaver:关于Spring注解AOP的注意点
    在使用Spring注解AOP时,有以下几个注意点:1. 引入相应的依赖:在使用Spring注解AOP时,需要引入aspectjwea...
    99+
    2023-09-13
    Spring
  • Python 代码智能感知类型标注与特殊注释详解
    目录一、代码智能感知二、类型标注函数返回值的类型标注变量的类型标注三、特殊的注释四、特殊的类型一个不会写好的类型标注和注释的Python程序员,是让使用TA的代码的人都痛苦无比的事情...
    99+
    2022-11-11
  • 关于@EnableGlobalMethodSecurity注解的用法解读
    目录作用prePostEnabled Securedjsr250E总结作用 当我们想要开启spring方法级安全时,只需要在任何 @Configuration实例上使用 @...
    99+
    2023-03-19
    @EnableGlobalMethodSecurity注解 @EnableGlobalMethodSecurity @EnableGlobalMethodSecurity注解用法
  • 关于查询MySQL字段注释的5种方法总结
    目录前言创建测试数据库查询所有表注释查询所有字段注释字段注释查询方式1字段注释查询方式2字段注释查询方式3字段注释查询方式4字段注释查询方式5修改表注释和字段注释修改表注释修改字段注...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作