3

您是否使用目录在大源代码文件的开头列出类的所有函数(可能还有变量)?我知道这种列表的替代方法是将大文件拆分为较小的类/文件,这样它们的类声明就足够不言自明了。但是一些复杂的任务需要大量代码。我不确定花时间将实现细分为多个文件真的值得吗?或者可以在类/接口声明之外创建一个索引列表吗?

编辑:

为了更好地说明我如何使用目录,这是我的爱好项目中的一个示例。它实际上不是列出函数,而是函数内部的代码块..但无论如何你可能会明白..

/*
CONTENTS

Order_mouse_from_to_points
Lines_intersecting_with_upper_point
Lines_intersecting_with_both_points
Lines_not_intersecting
Lines_intersecting_bottom_points
Update_intersection_range_indices
    Rough_method
    Normal_method
        First_selected_item
        Last_selected_item
        Other_selected_item

*/


void SelectionManager::FindSelection()
{

    // Order_mouse_from_to_points
    ...
    // Lines_intersecting_with_upper_point
    ...

    // Lines_intersecting_with_both_points
    ...

    // Lines_not_intersecting
    ...

    // Lines_intersecting_bottom_points
    ...

    // Update_intersection_range_indices
    for(...)
    {
        // Rough_method
        ....

        // Normal_method
        if(...)
        {
            // First_selected_item
            ...

            // Last_selected_item
            ...

            // Other_selected_item
            ...
        }


    }

}

请注意,索引项没有空格。因此,我可以单击其中一个并按 F4 跳转到项目用法,然后按 F2 跳回(简单的 Visual Studio 查找下一个/上一个快捷方式)。

编辑:

此索引的另一种替代解决方案是使用折叠的 c# 区域。您可以将 Visual Studio 配置为仅显示区域名称并隐藏所有代码。当然,对源代码导航的键盘支持非常麻烦……

4

5 回答 5

11

我知道这种列表的替代方法是将大文件拆分为较小的类/文件,以便它们的类声明足够不言自明。

正确的。

但是一些复杂的任务需要大量的代码

不正确。虽然需要“大量”代码,但长时间运行代码(超过 25 行)是一个非常糟糕的主意。

实际上没有列出函数,而是函数内部的代码块

更差。需要目录的函数必须分解为更小的函数。

我不确定花时间将实现细分为多个文件真的值得吗?

将内容拆分为较小的文件是绝对必要的。维护、调整和重用您的代码的人需要他们可以获得的所有帮助。

可以在类/接口声明之外创建索引列表吗?

不。

如果非要诉诸这种伎俩,那就太大了。

此外,许多语言都有从代码生成 API 文档的工具。Java、Python、C、C++ 有文档工具。即使使用 Javadoc、epydoc 或 Doxygen,您仍然必须设计一些东西,以便将它们分解成智能可管理的部分。

  1. 让事情变得更简单。

  2. 使用工具创建索引。

于 2010-03-13T15:27:09.790 回答
5

如果您创建一个大索引,则必须在更改代码时对其进行维护。无论如何,大多数现代 IDE 都会创建类成员列表。创建这样的索引似乎是浪费时间。

于 2010-03-13T15:28:03.350 回答
1

我永远不会在我的代码中做这种忙碌的工作。我会手动做的最多的事情是在文件/类的顶部插入几行来解释这个模块做了什么以及它打算如何使用。

如果方法列表及其接口有用,我会通过Doxygen等工具自动生成它们。

于 2010-03-13T17:50:23.933 回答
0

我做过这样的事情。不是整个目录,而是一个类似的原则——只是评论和所讨论的确切代码之间的临时链接。还要链接做出相同简化假设的代码片段,我怀疑这些假设可能需要稍后修复。

您可以使用 Visual Studio 的任务列表来获取某些类型的评论的列表。注释的格式可以在工具|选项、环境\任务列表中配置。这不是我最终自己使用的东西,但如果你经常使用这个系统,它看起来可能有助于导航代码。

于 2010-03-13T23:23:15.203 回答
0

如果你可以这样拆分你的方法,你可能应该写更多的方法。完成此操作后,您可以使用 IDE 从初始方法中为您提供静态调用堆栈。

编辑:您可以在编程时使用 Eclipse 的“显示调用层次结构”功能。

于 2010-03-13T17:27:37.553 回答