您是否使用目录列出了大型源代码文件开头的类的所有函数(也许是变量)?我知道这种列表的替代方法是将大文件拆分成较小的类/文件,这样它们的类声明就足够自我解释了......但是一些复杂的任务需要很多代码 . 我不确定是否真的值得花时间将实现细分为多个文件?或者除了类/接口声明之外还可以创建索引列表吗?
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 回答
正确 .
不正确 . 虽然需要“很多”代码,但长时间运行代码(超过25行)是一个非常糟糕的主意 .
更差 . 需要目录的函数必须分解为更小的函数 .
您必须将内容拆分为较小的文件 . 维护,调整和重用代码的人需要他们可以获得的所有帮助 .
没有 .
如果你不得不诉诸这种伎俩,那就太大了 .
此外,许多语言都有工具从代码生成API文档 . Java,Python,C,C都有文档工具 . 即使使用Javadoc,epydoc或Doxygen,你仍然需要设计一些东西,以便将它们分解为智力上可管理的部分 .
简化事情 .
使用工具创建索引 .
如果您创建一个大索引,则必须在更改代码时对其进行维护 . 无论如何,大多数现代IDE都会创建类成员列表 . 创建这样的索引似乎浪费时间 .
我永远不会在我的代码中做这种繁忙的工作 . 我手动做的最多就是在文件/类的顶部插入几行,解释这个模块做了什么以及如何使用它 .
如果方法列表及其接口有用,我会通过Doxygen等工具自动生成它们 .
我做过这样的事情 . 不是整个目录,而是一个类似的原则 - 只是评论和相关代码之间的临时链接 . 还要链接一些代码,这些代码使得我怀疑可能需要稍后修复的相同简化假设 .
您可以使用Visual Studio的任务列表来获取某些类型的注释的列表 . 可以在工具|选项,环境\任务列表中配置注释的格式 . 这不是我最终使用自己的东西,但如果您经常使用这个系统,它看起来可能有助于导航代码 .
如果您可以像这样拆分方法,那么您应该编写更多方法 . 完成此操作后,您可以使用IDE从初始方法为您提供静态调用堆栈 .
EDIT: 编程时可以使用Eclipse 's ' Show Call Hierarchy'功能 .