在代码中使用目录?

Aar*_*reP 3 tableofcontents

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

编辑:

为了更好地说明我如何使用目录,这是我的爱好项目的一个例子.它实际上不是列出函数,而是函数内部的代码块..但你可能无论如何都可以得到这个想法.

/*
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
            ...
        }


    }

}
Run Code Online (Sandbox Code Playgroud)

请注意,index-items没有空格.因此,我可以点击其中一个并按F4跳转到项目用法,然后按F2跳回(简单的视觉工作室查找 - 下一个/流行 - 快捷方式).

编辑:

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

S.L*_*ott 10

我知道这种列表的替代方法是将大文件拆分成较小的类/文件,这样它们的类声明就足够自我解释了.

正确.

但是一些复杂的任务需要很多代码

不正确.虽然需要"很多"代码,但长时间运行代码(超过25行)是一个非常糟糕的主意.

实际上不是列出函数,而是函数内的代码块

更差.需要内容表的函数必须分解为更小的函数.

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

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

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

没有.

如果你不得不诉诸这种伎俩,那就太大了.

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

  1. 让事情变得简单.

  2. 使用工具创建索引.


Kim*_*imi 5

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