首页 > 编程语言 >C#注释:提升可读性的注解艺术

C#注释:提升可读性的注解艺术

时间:2023-12-16 17:22:26浏览次数:35  
标签:XML 可读性 标记 C# 代码 注释 用于 注解 TODO

文章目录

注释

行注释

// 注释内容

段注释

/* 注释内容 */

XML注释

/// <summary>
/// 注释内容
/// </summary>

/// 是智能注释也称xml注释,会在被编译,并生成xml文件在可执行文件中。会影响编译速度,但不会影响代码执行速度。

一级注释

<remarks> 对类型进行描述,功能类似 < summary>,据说建议使用 < remarks>;
<summary> 对共有类型的类、方法、属性或字段进行注释;
<value> 主要用于属性的注释,表示属性的制的含义,可以配合 < summary > 使用;
<param> 用于对方法的参数进行说明,格式:<param name="param_name">value</param>;
<returns> 用于定义方法的返回值,对于一个方法,输入 /// 后,会自动添加 < summary>、<param > 列表和 < returns>;
<exception> 定义可能抛出的异常,格式:<exception cref="IDNotFoundException">;
<example> 用于给出如何使用某个方法、属性或者字段的使用方法;
<permission> 涉及方法的访问许可;
<seealso> 用于参考某个其它的东东:),也可以通过 cref 设置属性;
<include> 用于指示外部的 XML 注释;

二级注释

<c> or <code > 主要用于加入代码段;
<para> 的作用类似 HTML 中的 < p > 标记符,就是分段;
<pararef> 用于引用某个参数;
<see> 的作用类似 < seealso>,可以指示其它的方法;
<list> 用于生成一个列表;

另外,还可以自定义 XML 标签 。

注释换行

在 C# 智能注释时,常常希望它能在开发时显示为换行,使得提示更加友好!原来一直想怎么实现,今天偶然发现原来如此简单,只需将 <para>标记用于诸如 <summary>、<remarks>或 <returns>等标记内即可。

注释在开发时换行显示的办法
<para>标记用于诸如<summary><remarks><returns>等标记内,使您得以将结构添加到文本中。


注释在开发时换行显示的办法
<para>标记用于诸如<summary><remarks> 或 <returns>等标记内,使您得以将结构添加到文本中。

/// <summary> 
/// 基类(第 1 行) 
///<para> 说明:(第 2 行)</para> 
///<para>  封装一些常用的成员(第 3 行)</para> 
///<para>  前面要用全角空格才能显示出空格来(第 4 行)</para> 
/// </summary> 
public class MyBase 
{ 
      /// <summary> 
      /// 构造函数(第 1 行) 
      ///<para> 说明:(第 2 行)</para> 
      ///<para>  初始化一些数据(第 3 行)</para> 
      /// </summary> 
      public MyBase() 
      { 
            // 
            //TODO: 在此处添加构造函数逻辑 
            // 
       } 
} 

TODO注释

TODO注释使用后,可以帮助记录项目中未完成的任务都有哪些。
在代码段里使用TODO注释,如
“//TODO:此处还没测试通过”

在 View -> Task List ,选择 Comments ,即可以查看项目中所有标记 TODO 的位置。

例:

注释在编程中扮演着重要的角色,它们是对代码的解释和说明,有助于理解代码、提高可读性和可维护性。以下是关于注释的总结:

  1. 代码文档化: 注释是用来解释代码的目的、逻辑和实现细节的文本。良好的注释可以帮助其他开发者(包括你自己)更好地理解代码的含义和意图。

  2. 不同类型的注释:

    • 单行注释: 使用 // 来添加单行注释,通常用于对代码的某一行或者某个部分进行解释说明。
    • 多行注释: 使用 /* */ 来添加多行注释,适合对一段代码块或者功能进行详细的解释。
    • XML 注释: C# 中的特殊注释,以 /// 开始,用于生成代码文档,可以包含标签如 <summary>, <param>, <returns> 等,提供了更结构化的文档说明。
  3. 注释的内容:

    • 解释代码意图: 说明代码为什么要这样写,以及实现的逻辑思路。
    • 标识重要信息: 对于特殊处理、算法、设计决策等重要信息进行注释。
    • 提醒和警告: 在代码中标记潜在的问题、TODO、警告或需要注意的事项。
    • 版本控制信息: 记录代码修改、修复或版本更新的信息,以及作者、日期等相关信息。
  4. 注释的最佳实践:

    • 保持清晰和简洁: 注释应该清晰、简明扼要,避免过度注释。
    • 更新维护: 随着代码的更新和变更,及时更新和维护注释以保持其与代码的一致性。
    • 注释不应重复代码: 注释应该解释为什么,而不是简单地描述代码在做什么。
    • 注释要有意义: 避免添加无效或者明显的注释,注释应该提供有价值的信息。
  5. 注释的价值: 注释是协作和团队开发的重要工具,能够促进代码的理解、交流和维护。但过度注释也可能导致注释和代码不一致的问题,因此要平衡好注释的使用。

总的来说,良好的注释是良好编程实践的一部分,它们是帮助理解代码、传递信息、提高代码质量和可维护性的关键组成部分。

/// <summary>
/// 防御塔目标
/// <para>通过LockTarget锁定目标。</para> 
/// </summary>
protected Transform _target;// TODO 暂时为单个目标,后续需要改成列表。

标签:XML,可读性,标记,C#,代码,注释,用于,注解,TODO
From: https://www.cnblogs.com/hxjcore/p/17891293.html

相关文章

  • C++U5-10-二叉树3
    学习目标 二叉树重建的概念 二叉树重建流程 例题和解题思路 2 3 4 5 [【二叉树】求先序排列]  代码【算法分析】后序遍历的最后一个是根节点,由这个根节点可以在中序遍历中确定左子树和右子树的大小和元素,然后递归的去处理左子树和右子树,由于是......
  • Instruction-Following Agents with Multimodal Transformer
    概述提出了InstructRL,包含一个multimodaltransformer用来将视觉obs和语言的instruction进行编码,以及一个transformer-basedpolicy,可以基于编码的表示来输出actions。前者在1M的image-text对和NL的text上进行训练,后者跟踪了整个obs和act的历史,自回归地输出动作。问题纯语言......
  • 手写Call bind
    手写CallFunction.prototype.MyCall=function(context){varcontext=context??window;letfnSymbol=Symbol();context[fnSymbol]=this;constarg=[...arguments].slice(1);letres=context[fnSymbol](...arg);deletecontext[fnS......
  • C# OCR图片文字识别
    博主这里采用了两种库进行文字识别,一种是“Spire.OCR”,另一种是“PaddleOCRSharp”,这两种库,都可以直接到Nuget中去安装。 这里要注意一下,PaddleOCRSharp库是可以直接安装使用的,但是Spire.OCR库在安装后,需要将下载目录“nuget\packages\spire.ocr\1.8.0\runtimes\win-x64\nativ......
  • Excel-数据透视图
    1.建立点选表格内任一存储格--插入--数据透视表--可选范围和位置勾选想要显示的栏位标题--拖拽标题至不同位置会在数据透视表发生相应变化2.排序点选数据透视表內任意一格--右键--排序3.筛选现有列筛选:右侧三角(清除--选单内下拉)筛选器筛选:勾选筛选项拖拽至筛选器内4.查......
  • Failed to convert property value of type 'java.lang.String' to required type 'ja
    后端springboot项目使用getMapper接受,字段写了转换注解@JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-ddHH:mm:ss",timezone="GMT+8")还报错Failedtoconvertpropertyvalueoftype'java.lang.String'torequiredtype'java......
  • SCUCTF2023-WEB部分wp
    川大新生赛,出的确实有点水平的,通过一些渠道看了看题打了一些,有些地方还是值得学习学习的。不鸽了,先写点吧。因为他们是校园网访问,所以我这边也只能通过一些其他的方法去打,没截图....有附件能复现的尽量复现一下。主要看的是【Web】SCU新生赛个人wp及完赛感想-CSDN博客这篇blog......
  • C++ Qt开发:Tab与Tree组件实现分页菜单
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍tabWidget选择夹组件与TreeWidget树形选择组件,的常用方法及灵活运用。1.1TabWidgetQTabWidget......
  • 【Nacos】启动报错 failed to req API:/nacos/v1/ns/instance after all servers([xxx
    1  com.alibaba.nacos.api.exception.NacosException:failedtoreqAPI:/nacos/v1/ns/instanceafterallservers([xxx])tried:ErrCode:403,ErrMsg:<html><body><h1>Whitelab#我的配置spring.application.name=virtuous-base-servicespring.profiles.......
  • 解锁RocketMQ秘籍:如何保障消息顺序性?
    嗨,小伙伴们!小米在这里啦!今天我们要聊的话题是社招面试中一个经典而又百思不得其解的问题——“RocketMQ如何保证顺序性?”不用担心,小米来给你揭秘RocketMQ的秘密武器,让你轻松过关面试大关!引言:为什么要谈顺序性?首先,我们得明白为什么在消息队列中要讲究消息的顺序性。假设你正在开发一......