2011-02-04 9 views
5

私は、ユーザーのアクセス権を決定する一連のifステートメントを含む複雑なC#メソッドを持っています。C#メソッドの論理を視覚化する

私はこのロジックを、例えばワークフロー図やそれに類するものに視覚化する方法を模索しています。

これは、.NET 3.5とVisual Studioこれを行うことができるツール(できれ自由に利用可能)、2010年

を使用していますか?

NB:メソッド呼び出し(例:呼び出し階層)を視覚化するためのツールが多数見つかりましたが、これは私が探しているものではありません。私はロジックを視覚化するためのツールを探しています。

おかげ

EDIT:私の調査の一環として、私はFlowchart4C番号を見つけたが、それは完全に購入する$ 200と裁判が私はそれが私はそれに何をしたいん確認させません! (< 5つの条件文)。

+0

最高です自動化されたツールの権利ですか? –

+6

あなたは、この大規模な方法をリファクタリングして、主要部分が普通の英語のように読み始めるようにしたいと思うかもしれません。 – Marco

+1

私は試してみません。まず、パスをカバーし、現在の動作を検証する単体テストを記述します。次に、自動リファクタリングツールを使用して、メソッドなどを抽出してコードを明確にします。 – TrueWill

答えて

3

は、あなたの方法をリファクタリング:ここでは条件文

http://www.refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html
http://www.refactoring.com/catalog/replaceConditionalWithPolymorphism.html

に対処するためのいくつかの提案がありますが、おそらくこれは、あなたが探している、ただ明確にすること

http://www.refactoring.com/catalog/replaceConditionalWithVisitor.html

+0

ありがとう@Marco - 私はガード句が最も関連性があることを発見しました。私は流体ユーザタイプに割り当てられたタスクのセットを持っています。 – Russell

+0

質問:ロジックを別々のメソッドにリファクタリングすることは、マップの必要性を否定する1つの方法です。私の機能はパフォーマンスが重視されます(Webリクエストが行われるたびにセキュリティチェックが行われます)。 – Russell

+1

私は関数呼び出しを最適化するためにコンパイラを信頼します。パラメータを渡す際にデータのコピーが多くなければ、まず読みやすいコードを優先し、後で必要に応じてパフォーマンスを心配します。 – Marco

1

非自動:dia(Windows、Linux:フローチャートテンプレートあり)またはInkscape(Windows、Linux、Mac:ベクターグラフィックス)を使用してください。

自動:最初にリファクタリングしてから自動化します。

+0

ありがとう@レオニダス - 私はディアが素晴らしいフリーツールであることに同意します。私はそれを自動的に理想的にマッピングしています。 – Russell