代码之家  ›  专栏  ›  技术社区  ›  Olly

在代码中使用目录?

  •  3
  • Olly  · 技术社区  · 6 年前

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

    编辑:

    为了更好地说明我如何使用目录,这是我的爱好项目中的一个例子。实际上不是列出函数,而是函数内部的代码块。。但你还是可以得到这个主意。。

    /*
    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 find next/prevous快捷方式)。

    编辑:

    这个索引的另一个替代解决方案是使用折叠的C区。您可以将visual studio配置为只显示区域名并隐藏所有代码。当然,对源代码导航的键盘支持是相当麻烦的。。。

    5 回复  |  直到 14 年前
        1
  •  10
  •   S.Lott    15 年前

    我知道,除了这种列表之外,还可以将大文件拆分成更小的类/文件,这样它们的类声明就足够不言而喻了。

    对的。

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

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

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

    更糟的是。需要目录的函数必须分解成更小的函数。

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

    你必须把东西分成更小的文件。维护、改编和重用代码的人需要他们能得到的所有帮助。

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

    不。

    如果你不得不采用这种伎俩,那就太大了。

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

    1. 让事情简单些。

    2. 使用工具创建索引。

        2
  •  5
  •   Kimi    15 年前

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

        3
  •  1
  •   Ether    15 年前

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

    如果方法及其接口的列表是有用的,我会通过一个工具(如 Doxygen .

        4
  •  0
  •   please delete me    15 年前

    我做过这样的事。不是完整的目录,而是一个类似的原则——只是注释和所讨论的代码之间的特殊链接。此外,链接代码,使相同的简化假设,我怀疑可能需要修复后。

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

        5
  •  0
  •   kiwicptn    15 年前

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

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