可视化C#方法逻辑

5
我有一个复杂的C#方法,其中包含一组if语句,用于确定用户的访问权限。
我正在寻找一种将此逻辑可视化为工作流程图或类似内容的方法。
这是使用.NET 3.5和Visual Studio 2010。
有哪些工具(最好是免费提供)可以做到这一点?
注意:我已经找到了很多工具来可视化方法调用(例如调用层次结构),但这不是我要寻找的。我正在寻找一种可视化逻辑的工具。
谢谢
编辑:作为我的调查的一部分,我找到了Flowchart4C#,但它要花费200美元才能购买,并且试用版不会让我确认它是否符合我的要求! (<5个条件语句)。

只是为了明确,您正在寻找一种自动化工具,对吗? - Richard Marskell - Drackir
6
听起来你可能想要重构这个庞大的方法,以便首先让主要部分读起来像是普通英语。 - Marco
1
我不会试着直接重构代码。首先,编写覆盖各个路径并验证当前行为的单元测试。其次,使用自动化重构工具来梳理代码,如提取方法等。 - TrueWill
1
【踩在椅子上】@Russel,如果你在这里,那么肯定有必要整理一下方法的逻辑。长长的if语句列表是典型的代码异味,而有一些重构模式可以让你感到满意,并可能揭示底层结构的一些信息。【走下椅子】 - Marco
1
4级嵌套?哦,是的。它需要重构。我从不嵌套超过两个级别(方法和一个if)。我的经验是,当你发布应用程序并开始维护它时(并且已经忘记了为什么要这样做),更多的级别可能会让你陷入困境。 - jgauffin
显示剩余5条评论
2个回答

3

谢谢@Marco - 我发现守卫子句最相关 - 我有一组任务分配给不同的用户类型。 - Russell
问题:将逻辑重构为单独的方法是抵消使用映射的一种方式。我的函数对性能至关重要(每次进行网页请求时都进行安全检查),将其分解成多个方法会影响性能吗? - Russell
1
我会相信编译器进行函数调用的优化。除非在传递参数时有大量数据复制,否则我更愿意优先选择易读的代码,如果需要再担心性能。 - Marco
@Russell - 在Bill Wagner的书Effective C#(两个版本都有)中有一节叫做“更喜欢小而简单的函数”。它详细介绍了如果按照这种方式编程,JIT编译器可以创建更加高效的代码。 - TrueWill

1

非自动化:使用dia(Windows,Linux:具有流程图模板)或Inkscape(Windows,Linux,Mac:矢量图形)。

自动化:先重构,然后自动化。


感谢@Leonidas - 我同意Dia是一个很棒的免费工具。 :) 我正在努力实现自动绘图。 - Russell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接