- PR -

VisualStudioで不要なメソッド等の判別方法

投稿者投稿内容
Yun
常連さん
会議室デビュー日: 2007/01/25
投稿数: 22
投稿日時: 2007-10-03 09:55
消したくなる気持ち、わかります。
やっぱり保守面でしょうか?

機能追加のためにASP.NETのプロジェクトを渡されて、
画面(aspx.vb)から呼んでるクラスのメソッドに引数を追加していたら、
使っていない画面でエラーが・・・
どうしよう・・・めんどくさい・・・適当に引数書いておくか・・・
でもだれもその画面をプロジェクトから消そうとしない・・・

って使ってないaspxが残ってるのは論外ですかね(笑)

使ってないメソッドが残っていても、多階層構造で作られている場合、
同じようなことが起こりうるのではないでしょうか。

このあとテストを十分にやるのであれば、消したい気持ち、わかります。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-03 10:31
引用:

Error401さんの書き込み (2007-10-03 09:53) より:
引用:

Jittaさんの書き込み (2007-10-03 07:44) より:
あるプロジェクトで、プロジェクト内では呼ばれていないメソッドがありました。このメソッドは、削除していいでしょうか?


答えは「ダメ」

問題。だめな理由を考えましょう。



何故ですか?

.NET Frameworkが提供しているメソッドで、.NET Framework内部からは呼ばれていないメソッドを
全部消されたら我々は困りますよね。私はそういう意味だと考えました。
ひろ
会議室デビュー日: 2007/09/19
投稿数: 9
投稿日時: 2007-10-03 10:39
ソリューションレベルで見た時の話でなくて?

あるソリューションにプロジェクトA,Bが存在していて、

 プロジェクトAにあるクラスのメソッドはプロジェクトAでは使用してない。
 プロジェクトBではプロジェクトAのクラスのメソッドを使用していた。

ような場合を想定したのかな、と。
Error401
常連さん
会議室デビュー日: 2007/03/12
投稿数: 39
投稿日時: 2007-10-03 10:45
話が微妙にずれてませんか?

もともとの質問は「不要なもの」を検出したいということでした。
その前提を覆して「あなたが不要と思っているものは、実は不要ではない。だから削除してはいけない」ということですか?

私は、不要なものなら削除すべきだと思います。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-10-03 11:28
引用:

その前提を覆して「あなたが不要と思っているものは、実は不要ではない。だから削除してはいけない」ということですか?



ちげ。

「プロジェクト内のコードで呼び出されている箇所が無い=不要」とは限らない、ということです。

既にコメントがついているように、ソリューション内の別プロジェクトでメソッドが使用されているかもしれません。

クラスライブラリであれば、別のソリューションで使用されていることもあるわけで、そういう場合は「不要」の判定がさらに困難です。

また、リフレクション経由でメソッド呼び出しが行われているような場合、「メソッドが呼び出されている箇所」を特定することすら困難です。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-10-03 11:34
引用:

(a).csファイル中の使っていないクラス、メソッド、using宣言



VS の標準機能では出来ません。

using を削ってくれるツールはありますが、それ以外の操作=クラス、メソッドの削除を行うようなツールは僕は知りません。

別投稿でも書いていますが「不要」の判定がかなり難しいので、こういった操作を行うツールは存在しないか、あっても数が少ないのではないかと思います。

引用:

(b).aspxファイル中の不要なJavaScript外部ファイル(.js)、スタ
イルシート外部ファイル(.css)



これも「不要」の判定が難しいと思うので、無いんじゃないかな?>ツール
もちろん、VS 標準の機能ではできません。

結局「不要」の判断は人間の主観によるものが大きいので、対象がクラスであってもメソッドであっても、自動検出→削除というのは難しいはずです。

何らかの方法で「削除するべきファイル名」「削除するべきクラス名」「削除するべきメソッド名」が洗い出せれば、それらを削除することは VS のマクロで十分実現できると思います。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-03 11:48
引用:
「あなたが不要と思っているものは、実は不要ではない。だから削除してはいけない」

私はこの考え方に近いですね。不要ではないかも知れないくらいです。

まず、不要なものを機械的に検出するのはかなり難しいと思います。
例えばcsではどこからも呼ばれていなくても、Button1_Clickとかは消しちゃいけないし、
コードビハインドのクラスは該当するaspxが必要かどうかに依存するし、、
そのaspxが必要かどうかなんてそのWEBアプリのオペレーションによるわけだし、、

消すメリット、または消さないことによるデメリットがあるなら消すべきでしょう。
それら(保守がめんどくさいとか)と、消すのにかかる時間や、誤認して消してしまった場合の
デメリットとかを考えて天秤にかけます。

引用:
開発も終わりに近づいてきましたが、開発環境に不要なものがいく
つか残ってしまっています。

経験則的には、終わりに近ければ近いほど、余計なことをしないほうがいい、と思っています。
もうひとつは、ちゃんと動いているものをあまりいじくるものではない、というのもあります。
Error401
常連さん
会議室デビュー日: 2007/03/12
投稿数: 39
投稿日時: 2007-10-03 13:12
なるほど。みなさんのおっしゃりたいことは理解しました。

不要かどうかを判断できないものに関する削除の是非は、当然「ダメ」だと私も思ってますので、これでこの話は終わります。

(この後Flameの元となりそうな文章をバッサリ削除)

スキルアップ/キャリアアップ(JOB@IT)