- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
C# 语言规范的附录 A 处理文档注释,它指出有两种形式:
single-line-doc-comment:
/// input-charactersopt
delimited-doc-comment:
/** delimited-comment-textopt */
有偏好吗?我注意到人们更喜欢单行文档注释格式,但我不知道除了人们从美学角度选择之外是否还有技术或实际原因。
我还阅读了 Jones 和 Freeman 合着的“C# for Java Developers”一书,内容如下:
Code documentation comments are preceded by three forward slashes, as shown here:
/// A single line documentation comment.
The C# specification also recommends use of the familiar /** token to identify multiline documentation comments. However version 7.00 of the C# compiler does not support this syntax.
我无法验证最新版本的 csc 是否不支持多行语法。据我所知,这种语法工作得很好。
**edit**
有些人要求展示一个示例。这是示例:
/// <summary>
/// Performs a Method1 calculation on two strings
/// </summary>
/// <param name="arg1">The first string</param>
/// <param name="arg2">The second string</param>
/// <returns>The number 3</returns>
public static int Method1(String arg1, String arg2)
{
return 3;
}
/**
* <summary>
* Performs a Method2 calculation on two strings
* </summary>
* <param name="arg1">The first string</param>
* <param name="arg2">The second string</param>
* <returns>The number 3</returns>
*/
public static int Method2(String arg1, String arg2)
{
return 3;
}
因此,重申一下,问题是哪种形式更可取,是否有技术或其他原因更喜欢上面示例中的 Method1 或上面示例中的 Method2 的文档注释样式?
最佳答案
自从发布这个问题以来我已经能够收集到的信息确认即使 csc/doc:
将接受任何一种格式,单行格式比多行格式有一些优势:
1) 在 Visual Studio 中,IntelliSense 将为您提供信息,阐明您在键入时在方法调用表达式中传递的参数,无论您最初是否使用///或/** 记录了您的方法。但是,仅当您使用///格式时,Visual Studio 才会支持您使用预填充来编写文档注释。例如,如果您将光标放在 Visual Studio 中的方法声明上方并按三次 /
,您将看到为您生成的特定于上下文的模板,如下所示:
/// <summary>
///
/// </summary>
/// <param name="arg1"></param>
/// <param name="arg2"></param>
/// <returns></returns>
如果将光标放在方法上并按 /
、*
、*
,这将不起作用。
2) 单行格式允许更清晰的文档注释布局,因为每一行都以相同的缩进开始, block 的所有行都可以使用,并且每行注释信息都是左对齐的。
3) 通常,使用单行样式的优点在于单行注释可以自由包含 */标记,而多行注释则不能;如果您在编辑器中将评论从一个地方复制/粘贴到另一个地方,它们通常更容易使用。
4) 如果您考虑 csc.exe 如何处理相邻的文档 block ,还有证据表明 C# 编译器更喜欢单行格式。考虑这样的声明:
/**
* <thiscutetag>some info</thiscutetag>
*/
/**
* <theothercutetag>more info</theothercutetag>
*/
public static void Main() { }
当通过 csc/doc 传递时:将生成文档,就好像两个 block 的内容都修改了 Main 方法一样。这种行为并不直观,但如果将两个相邻的多行注释 block 转换为两个相邻的单行注释集,就会变得直观,如下所示:
/// <thiscutetag>some info</thiscutetag>
/// <theothercutetag>more info</theothercutetag>
public static void Main() { }
关于c# - C# : What are technical reasons to prefer///or/** 中的文档注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605146/
为了使用androidx.preference,我应该将依赖添加到build.gradle 图片 A 来自 https://developer.android.com/jetpack/androidx
我正在尝试从我的应用程序设置 (preferences.xml) 的布局中检索 SeekBarPreference。但是,当我尝试将 findPreference("font_size") 转换为 S
我的需求 拥有一个充满偏好的主屏幕 (main_screen) 单击此 main_screen 中的一个首选项(pref1)会打开一个 设置子屏幕(sub_screen) 在这个 sub_screen
我正在使用 Eclipse 3.7 (Indigo) 作为 Eclipse 插件。该插件将通过产品文件打包为独立应用程序。安装将是多用户安装,如 this link 的场景 2 中所述。 。这样就会有
Preferences.flush() 和 Preferences.sync() 有什么区别? 来自Javadoc(flush()): Forces any changes in the conten
在我的 AppDelegate.m 中,如果用户还没有进入设置面板,我会尝试从我的 Preference Bundle 中初始化默认值。初始化运行,我看到了符合我偏好的正确数量的对象,但它们都是空的,
我有 CheckBoxPreference 和其他 2 个:一个是 Edit Test Pref。另一个是 ListBox Pref。我如何启用列表框首选项和禁用编辑文本首选项。 CheckBoxPr
我想使用“prefer source”选项安装所有由我维护的依赖项,以及使用“prefer dist”选项安装所有其他非我维护的依赖项。 Composer 可以吗?我在想可能有这样的东西,但我找不到:
查看PHP Composer的install命令的帮助,看到以下两个选项 $ composer help install Options: --prefer-source Fo
我无法解决错误的问题: incompatible types: no unique maximal instance exists for type variable T with upper bou
我的任务是使用 POSIX 线程编写读写实现。我想知道我的实现对于这两种情况是否正确: 已删除可怕的尝试 2 号尝试 读者首选: 变量: int readersActive_; sem_t lock_
我正在尝试使用上面的工具栏为我的应用创建一个设置窗口,以输入“后退”按钮等。但是我总是这个错误。 错误 呈现期间引发的异常:android.support.design.widget.AppBarLa
Coverity 实例详细信息: SA 版本:8.6连接:8.7 尝试将缺陷上传到 coverity 实例时,出现以下错误 正在连接到服务器 xxx.xxx.com:9090[错误] SSL 请求失败
在我当前的应用程序中,我已将偏好设置的导入从“android.preference.Preference”更改为“android.support.v7.preference.Preference”,因
在学习旧教程 (Créez des applications pour Android -> openclassroom) 时,我被 PreferenceActivity 类中的这个已弃用的方法 ad
我想在我的应用程序中使用“API Demos/app/preferences/1.preferences from XML”布局,但我不知道在哪里可以找到源文件。我在 API 演示示例中进行了搜索,但
我必须使用 weblogic.xml 在 Weblogic 12c 服务器 (12.2.1) 上 它是基于 Jersey 1.9 的 REST 应用程序。 (Jersey 1.x JAX-RS RI)
我有一些简单的代码,我正在使用它来学习使用路标库的 OAuth 身份验证。我正在尝试使用 java.util.prefs.Preferences 将请求 token 、 token secret 和
如果没有特殊要求,我们可以使用android提供的框架来创建系统样式的preference screen,在其内部可以包含preferencecategory和preference<con
我需要基于另一个应用构建一个应用。在我的 PreferenceScreen 中,我有 2 个 ListPreference 对象。第二个依赖于第一个并禁用,直到选择第一个(仍然需要弄清楚) 我想将第一
我是一名优秀的程序员,十分优秀!