热门标签 | 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

评论分类数据集



推荐阅读
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • ABBYY FineReader:高效PDF转换、精准OCR识别与文档对比工具
    在处理PDF转换和OCR识别时,您是否遇到过格式混乱、识别率低或图表无法正常识别的问题?ABBYY FineReader以其强大的功能和高精度的识别技术,完美解决这些问题,帮助您轻松找到最终版文档。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 V2017.11
    雨林木风 GHOST XP SP3 经典珍藏版 V2017.11 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 本文深入探讨了 Java 中 LocalTime 类的 isSupported() 方法,包括其功能、语法和使用示例。通过具体的代码片段,帮助读者理解如何检查特定的时间字段或单位是否被 LocalTime 类支持。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
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社区 版权所有