首页 文章

在代码中使用目录?

提问于
浏览
3

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

EDIT:

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

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


    }

}

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

EDIT:

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

5 回答

  • 10

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

    正确 .

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

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

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

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

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

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

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

    没有 .

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

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

    • 简化事情 .

    • 使用工具创建索引 .

  • 5

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

  • 0

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

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

  • 1

    我做过这样的事情 . 不是整个目录,而是一个类似的原则 - 只是评论和相关代码之间的临时链接 . 还要链接一些代码,这些代码使得我怀疑可能需要稍后修复的相同简化假设 .

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

  • 0

    如果您可以像这样拆分方法,那么您应该编写更多方法 . 完成此操作后,您可以使用IDE从初始方法为您提供静态调用堆栈 .

    EDIT: 编程时可以使用Eclipse 's ' Show Call Hierarchy'功能 .

相关问题