热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

评论分类数据集_评论分类

评论分类数据集注释可以用来传达代码的作用,应该做什么,不应该做什么,为什么存在,何时以及如何以及不应该使用它等等。让我们对它

评论分类数据集

注释可以用来传达代码的作用,应该做什么,不应该做什么,为什么存在,何时以及如何以及不应该使用它等等。

让我们对它们进行分类!

这不是很无聊吗? 好吧,尽管卡尔不这么认为。 我认为这是我们在讨论评论时的重要下一步:

  • 评论您的他妈的代码!
  • 评论意见
  • 分类学
  • 成本与收益
  • 未完待续 …

总览

将根据内容,维护含义,位置和替代方案对不同类型的注释进行比较。

这些图标来自HevnGrafix创建的“ 新闻和杂志”图标集 。

分类目录

叙述

有一些注释说明了代码的作用。 诸如“遍历客户列表”或“通过新产品的价格增加总数”之类的事情。

保养

对于这些意见在所有增加任何价值,他们必须完全跟上时代的。 代码和注释之间的每次转移都将Swift导致混乱,并很快将其忽略。

位置

这些通常是嵌入式注释。

保持它们半途可维护的唯一方法是只允许它们在以下几行中引用代码。 其他一切很快崩溃,因为没有机制可以找到引用即将更改的代码的遥远注释。

备择方案

通过编写简洁的代码,几乎可以使叙事变得多余。 仔细的命名,透明的设计,使用知名的模式等,可以更好地解释代码,并使其更易于维护。

人们普遍同意应避免这些评论。 仅在极少数情况下,如果使用不可思议但不可避免的语言机制,才有必要使用它们。

合约

然后是合同定义注释。 它们描述了代码单元的中央抽象,代码单元如何与其依赖关系进行交互以及哪些前置条件和后置条件成立。

他们还谈到了代码做什么 ,但不像叙述的意见,他们在声明样式这样做。 理想情况下,可以读取它们而不是代码和测试。

保养

撰写和维护要兑现这一承诺的评论,需要坚定的决心,对细节的关注以及明确的语言。

成功执行此操作将大大增加注释的代码的可用性。 另一方面,不清楚或完全错误的注释,或者未能使合同和代码保持同步将导致很多混乱。

与旁白不同,合同注释仅描述抽象行为,而不是实现细节,因此维护工作不那么紧张。

位置

在具有这些语言的任何语言中,都应使用文档注释(例如Javadoc或.NET XML注释 )来表示此类别。

地方性势在必行。 合同注释最好只讨论单个概念,并且在绝对不可避免的情况下,仅提及其他代码单元(例如,另一种方法)。 如果可能,这仅以自动更新的链接的形式发生(例如Javadoc中的@see )。 否则,评论应避免重复信息并创建单一事实来源。

备择方案

干净的代码和测试通常被认为是合同注释的替代方法。

测试的显着优势在于,只要它们通过测试,就可以保证设备显示出测试的行为。 当然,由于措辞含糊和维护不善,行为和文档可能会有所不同,因此注释也不是一样。

仅在代码和测试中进行记录的缺点是,从下至上建立高级理解需要上下文切换,并且需要时间-可能很多。 如果随后不使用分析的代码,很多新获得的知识可能很快就会被遗忘。

我认为比较干净的代码和测试是一个方面,而合同的另一侧则是本次讨论中最关键的方面。 我在这里不再赘述,而是重复我之前说过的话:为什么不同时投资两者?

技术背景

注释可以提供技术背景和澄清单位代码什么 。 他们可以解释何时可以使用它,什么时候不可以使用,一个人可以解决什么问题,甚至可以举例说明如何使用它。

请注意,其中一些信息也可能是合同的一部分,但重要的是不要混淆这两个类别! 合同评论做出了承诺,上下文评论解释了为什么这样做以及它的好处。

上下文注释对于学习该部分代码的任何人都将具有极大的价值,无论是使用它还是对其进行修改。

保养

为了提供有用的上下文,作者必须从读者的角度看待事物。 如果日常盲目罢工,并且所有抽象和困难部分都非常明显,那么这将是困难的。

与合同不同,上下文注释并不是要取代对代码本身的阅读和理解,而只是支持。 因此,尽管它们应该是最新的,但是可以忍受与代码的一些偏差。

位置

防止合同和上下文注释混淆很重要! 因此,最好不要混合它们,或者,如果语言没有提供其他常用的机制,则至少要清楚地将它们分开。

在Java中,通常将它们组合为非Javadoc块,通常在所描述的代码单元的开头。 从Java 8 开始 ,也可以使用新标签@apiNote@implNote

就其本质而言,此类注释可能不那么本地化,并且暗指其他代码单元。 当然,最好让他们留在本地并为他们找到有意义的地方。 但是,这并不是必须的,因为它们不一定总是最新的。

备择方案

读者通常可以找到生产代码来调用正在调查的单元,或者查看其测试。 从这些调用站点获得更广泛的了解类似于从测试中了解合同:它始终是最新的,但可能是一种乏味的自下而上的方法。 另外,这可能混合了预期和有问题的用例,而没有进一步的区分或解释。

演示是描述一段代码的好方法。 但是,它们很少见,也必须加以维护。

历史背景

通常,代码是根据某些要求非显而易见的设计规范或情况编写的。 也许可以采用一种更清洁的方法,除非它没有一些非常具体的细节,否则这些细节就无法纳入。 解释此类情况的文档提供了有价值的信息,可帮助您理解为什么存在该代码。

记录历史上下文的一种形式是代码注释。

保养

他们应该总是一粒盐,并以防止与其他评论混淆的形式写成。 理想情况下,历史语境注释中应包含诸如“写作时”之类的短语,以强调其短暂性。 如果他们清楚地陈述了自己的假设,则更容易将它们标识为过时的。

我几乎没有理由花费时间来更新它们。 最好让它们即使稍稍老化也要站立,并在它们描述的情况变化太大以至于无法使用时将其删除。

位置

这些注释甚至可能比提供技术上下文的注释更经常地描述或引用没有自然单数位置的概念。 如果同意不更新它们,这是可以容忍的。

备择方案

这些信息也可以以提交消息的形式添加到源代码管理中。 这样做的好处是提交消息始终是“最新的”,因为变更集本身是不可变的。 一条消息还可以涵盖不同文件之间的一组更改,这通常很方便。 同时,这可能是一个缺点,因为必须在几个较大的消息中搜索非常本地的信息。 最后,查找提交消息会增加从代码到文档的间接级别。

历史背景的另一个来源是与提交相关的问题。 它们可能包含许多难以在注释或提交消息中呈现的有价值的信息,例如图表,与客户的讨论,到其他来源(如Wiki)的链接等。 但是问题甚至会从代码中进一步消除,并且通常涵盖更高层次的领域。

由GlynLowe在CC-BY 2.0下发布–我改变了视野和色彩。

由GlynLowe在CC-BY 2.0下发布 –我改变了视野和色彩。

反射

我们将评论分为以下四类:

内容 保养 位置 备择方案
目标 成本 形成 地区性
叙述 什么
(描述性的)
比赛
展示
很高 排队 非常
重要
干净的代码
合约 什么
(说明性)
比赛
行为
doc。
注释
重要 干净的代码,
测试
技术
语境
做什么的
有帮助的

注释
可取的 干净的代码,
测试,演示
历史的
语境
为什么 如果删除
过时的
非常低 指出
暂时性
可取的 提交味精,
问题

我希望这种分类法可以帮助团队确定是否以及如何使用评论。 我们可以看到不同种类具有不同的属性,因此应单独讨论。

翻译自: https://www.javacodegeeks.com/2015/10/a-taxonomy-of-comments-2.html

评论分类数据集



推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
author-avatar
柯韵亚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有