代码文档:多少算太多?

2023-11-24

.NET 源代码中有多少代码文档过多?

一些背景:我继承了一个大型代码库,我在我在这里发布的一些其他问题中讨论过该代码库。该代码库的“功能”之一是 God Class,它是一个静态类,包含超过 3000 行代码,包含几十个静态方法。一切都是从Utilities.CalculateFYBasedOnMonth() to Utilities.GetSharePointUserInfo() to Utilities.IsUserIE6()。这都是很好的代码不需要重写,只是重构为一组适当的库。我已经计划好了。

由于这些方法正在进入新的业务层,而我在这个项目中的角色是为其他开发人员维护系统做好准备,因此我正在考虑可靠的代码文档。虽然这些方法都有良好的内联注释,但它们并不都具有 XML 注释形式的良好(或任何)代码 doco。使用 GhostDoc 和 Sandcastle(或 Document X)的组合,我可以创建一些非常漂亮的 HTML 文档并将其发布到 SharePoint,这将使开发人员更多地了解代码的用途,而无需浏览代码本身。

随着代码中文档数量的增加,浏览代码变得更加困难。我开始怀疑 XML 注释是否会使代码比更简单的代码更难维护//comment会在每个方法上。

这些例子是来自文档 X 样本:

        /// <summary>
        /// Adds a new %Customer:CustomersLibrary.Customer% to the collection.
        /// </summary>
        /// <returns>A new Customer instance that represents the new customer.</returns>
        /// <example>
        ///     The following example demonstrates adding a new customer to the customers
        ///     collection. 
        ///     <code lang="CS" title="Example">
        /// CustomersLibrary.Customer newCustomer = myCustomers.Add(CustomersLibrary.Title.Mr, "John", "J", "Smith");
        ///     </code>
        ///     <code lang="VB" title="Example">
        /// Dim newCustomer As CustomersLibrary.Customer = myCustomers.Add(CustomersLibrary.Title.Mr, "John", "J", "Smith")
        ///     </code>
        /// </example>
        /// <seealso cref="Remove">Remove Method</seealso>
        /// <param name="Title">The customers title.</param>
        /// <param name="FirstName">The customers first name.</param>
        /// <param name="MiddleInitial">The customers middle initial.</param>
        /// <param name="LastName">The customers last name.</param>
        public Customer Add(Title Title, string FirstName, string MiddleInitial, string LastName)
        {
            // create new customer instance
            Customer newCust = new Customer(Title, FirstName, MiddleInitial, LastName);

            // add to internal collection
            mItems.Add(newCust);

            // return ref to new customer instance
            return newCust;
        }

And:

    /// <summary>
    /// Returns the number of %Customer:CustomersLibrary.Customer% instances in the collection.
    /// </summary>
    /// <value>
    /// An Int value that specifies the number of Customer instances within the
    /// collection.
    /// </value>
    public int Count
    {
        get 
        {
            return mItems.Count;
        }
    }

所以我想知道你:你有记录吗all带有 XML 注释的代码,目的是使用 NDoc (RIP) 或 Sandcastle 之类的东西?如果没有,您如何决定哪些内容可以获取文档,哪些内容不能?像 API 这样的东西显然会有 doco,但是如果你要移交给另一个团队来维护的代码库呢?

你觉得我应该怎么做?


没有人提到你的代码不需要臃肿,XML 文档可以位于另一个文件中:

/// <include file="Documentation/XML/YourClass.xml" path="//documentation/members[@name='YourClass']/*"/>

然后,您的 Add 方法可以在其上方不包含额外的 XML/注释,或者如果您只喜欢摘要(因为它与单独的文件合并)。

它比 Javadoc 和 PHP/Javascript 中的衍生格式等垃圾格式强大得多(尽管 Javadoc 为 XML 语法铺平了道路)。另外,可用的工具要优越得多,并且帮助文档的默认外观更具可读性并且更易于自定义(我可以说,通过编写 doclet 并将该过程与 Sandcastle/DocProject/NDoc 进行比较)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

代码文档:多少算太多? 的相关文章

随机推荐

  • [:shell 编程中的意外运算符[重复]

    这个问题在这里已经有答案了 My code bin sh filename choose sh read choose choose y o choose Y echo Yes exit 0 choose n o choose N echo
  • 在 .csproj 中包含项目范围之外的内容文件

    我有一个 C 项目 MyProject csproj 位于 C Projects MyProject 我还有想要复制到该项目的输出目录中的文件 但是 这些文件位于 C MyContentFiles 位置 即它们不在项目范围内 该目录也有子目
  • C# 在运行时添加带有值的按钮[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想在运行时向我的选项卡控件添加一个具有值的按钮 许多教程展示了创建与数据库的连接时是如何完成的 有没有什么方法可以在不连接数据库的情况下完成 在我将数据输入到两个文本框中并单击 保存
  • 无法覆盖 s3 中的内容处置标头

    我正在使用以下 php 函数为公众提供临时访问私有文件的权限 function get s3 signed url bucket resource AWS S3 KEY AWS s3 secret key expire seconds ex
  • IFrame 是否被 Google 抓取?

    我有一个 iframe 它的源是从 servlet 响应中获取的 那么 iframe 的内容会被抓取吗 Google 现在确实会抓取框架内容 只是还不确定有多少股权被传递给链接 http www serroundtable com goog
  • 如何删除 matplotlib 子图中的填充/边框

    第二个子图只是带有叠加图的第一个图像 在第二个图中 似乎有白色填充 边框 如何删除这个填充 空白 为了完整起见 这里是执行绘图的代码片段 fig ax plt subplots 1 2 fig set size inches 16 6 fo
  • 如何用Java创建Design QR码?

    我想用 Java 创建设计 QR 码 设计 QR 码可能包含图形形式的徽标 这是此类设计的代码的示例 如何创建这样的二维码 我刚刚找到了一个可以创建此类二维码的软件 有一种不同的方法可以将图片放入二维码中 代替 在冗余部分上乱涂乱画并依靠纠
  • 如何将生成器的下一个值放入列表中

    我制作了一个生成器来逐字读取文件 并且效果很好 def word reader file for line in open file for p in line split yield p reader word reader txtfil
  • JavaScript 中 == 和 === 有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Javascript vs 我使用哪个 等于 运算符重要吗 JavaScript 什么时候比 更有意义 以下方法在将字符串与未定义值进行比较时有什么区别 var x if x undefined al
  • Interface Builder 在 MacRuby 中看不到 Outlet

    我正在尝试使用 XCode 和 Interface Builder 构建一个基本的 hello world 应用程序 但是 在 Interface Builder 中我看不到连接的插座 我转到对象检查器窗格的连接选项卡 它显示 新引用插座
  • pandas 按 n 秒分组并应用任意滚动函数

    我有一些加速度计读数的 csv 数据 格式如下 不完全是这样 真实数据具有更高的采样率 2013 09 28 17 36 50 322120 0 152695 0 545074 0 852997 2013 09 28 17 36 50 62
  • Thymeleaf 将参数从 html 发送到控制器

    我是 Thymeleaf 的新手 我正在尝试创建简单的 CRUD 应用程序 我正在尝试通过删除按钮删除客户类的对象 如何使用 Thymeleaf 将参数 例如 id 设置为调用 deleteUser 的方法 这是我的控制器 package
  • 将继承的对象存储在数据库中

    我试图找出将对象模型中的继承关系映射到关系数据库的最佳方法 例如 考虑以下类结构 public Class Item public String Name get set public int Size get set public Cla
  • 对于张量流中的二元分类,成本函数始终返回零

    我在张量流中编写了以下有问题的二进制分类程序 无论输入是什么 成本始终为零 我正在尝试调试一个较大的程序 该程序没有从数据中学习任何内容 我已经将至少一个错误缩小到总是返回零的成本函数 给定的程序使用一些随机输入并且存在相同的问题 self
  • 如何使用用户生成的整数数组填充 dataGridView

    有了这个 dataGridView DataSource theData Select x index gt new CreatureRoll x CreatureLabel index OrderByDescending x gt x C
  • 在 VHDL 中找到运算符“+”的“0”定义

    首先我想指出 这是我第一次尝试 VHDL 所以请客气一点 我想读取 X1 X4 输入并在输出处生成输入的总和 这是我的代码 library IEEE use IEEE STD LOGIC 1164 ALL entity counter of
  • 在 C# 中手动验证 JWT 令牌

    我遇到了一些麻烦手动验证Identity Server 4 颁发的 JWT 令牌 使用 客户端 ID CLIENT1 客户端密码 123456 我不断收到的异常是 IDX10501 签名验证失败 无法匹配密钥 PII 默认情况下是隐藏的 将
  • 如何在 SwiftUI 中获取拖放文件的文件名?

    我一直在尝试找出如何获取放入 SwiftUI 视图中的图像的文件名 代码片段如下 struct MainView View DropDelegate ObservedObject var userState UserState var bo
  • 新行 \n 在 JButton.setText("fnord\nfoo") 中不起作用; [复制]

    这个问题在这里已经有答案了 在 JButton 上 我想在多行上列出信息 我试过 n作为新行字符但它不起作用 以下代码 JButton setText fnord nfoo 将显示为 fnordfoo 如何强制换行 JButton 接受 H
  • 代码文档:多少算太多?

    NET 源代码中有多少代码文档过多 一些背景 我继承了一个大型代码库 我在我在这里发布的一些其他问题中讨论过该代码库 该代码库的 功能 之一是 God Class 它是一个静态类 包含超过 3000 行代码 包含几十个静态方法 一切都是从U