- - PR -
VB.NetにおけるメソッドのSTEP数について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-27 12:23
最近からVB .Netの開発を始めたものですが、メソッドのstep数について疑問があります。
クラスはある機能を取りまとめたもので、メソッドはCで言う関数と同じと思って、 色んな参考書等を読んでいると、『メソッドは20〜30step前後で記述する』と書いてあります。 そこで疑問なのですが、20〜30stepでメソッドを記述するとメソッドの数が膨大になり 分かりにくいソースにならないのでしょうか? 機能の重複を避けるために、短くするというのは分かるのですが、あまりメソッドの数が多くなっても保守がしにくいのでは?と思いました。 みなさんは、実際に20〜30stepぐらいでメソッドを作成されているのですか? 結構初歩的な質問ですが、ご教授ください。 | ||||
|
投稿日時: 2004-11-27 12:26
だからクラス図などを書いて、プログラムでなく、設計書でプログラムを管理するんですよ。
_________________ | ||||
|
投稿日時: 2004-11-27 12:59
C言語でもモジュール化を推し進めると、20〜30STEPの単機能関数がたくさんできると思うんだけど・・・。
重複したコードが多い長いメソッドがたくさんあるプログラムよりは保守しやすいかも・・・。 | ||||
|
投稿日時: 2004-11-27 13:09
諸農です。
20〜30の本当の意味は、ひとつのメソッドに複数機能の内容を盛り込まないようにしましょうと言うことだと思います。20〜30と言う数字が必ずしも1メソッドあたりのコードライン数として妥当であると言うことではないです。 その参考書が意味するところは、クラスの機能設計を適切に行いましょう、ということだと思います。 ちなみに、メソッド数が増えるとわかりにくいソースになるというのは、具体的にどういった部分のことを懸念されていますか? Jittaさんも言われているとおり、現時点では適切なドキュメント(設計図)を作ることが大事になるのではないでしょうか。 余談ですが、来年予定されているVS2005にはダイアグラム表示機能が装備されます。この機能はソースコードからUMLに似た絵をIDE上で表示してくれるので、ソースコードを追いかける様なことをしなくてもクラスの見通しが良くなる便利な機能だと私は考えています。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2004-11-27 15:14
unibon です。こんにちわ。
一般に、分かりやすいクラス構造にしてそのクラスにメソッドを作ると、およそ20〜30ステップにおさまる、というのは否定はしません。しかし、その逆は真ではないと思います。すなわち、20〜30ステップになるようにメソッドを作ると、プログラムが分かりやすくなるかと言えば、そうではないでしょう。 だから20〜30ステップを目標にコーディングするのは、目的と手段を取り違えているとも言えます。 たまにはひとつのメソッドが100行を超えても、それはアリだと思います。しかし、どのメソッドも100行を超えていたらやっぱりそれはちょっと...、と思います。 | ||||
|
投稿日時: 2004-11-27 16:30
単機能のメソッドだと、役割ズバリな名称をつけやすいので、結果的に自然言語に近づいて、後からみてもわかりやすいという効能もありますね。
| ||||
|
投稿日時: 2004-11-28 00:02
余談ですが、Borland Together .NET Edition Ver.2を、VS.NET2003にインストールすると、VS.NET2003上でもダイアグラム表示してくれます。便利です。 _________________ | ||||
|
投稿日時: 2004-11-28 01:25
諸農です。
だんだん脱線してしまうのですが(^^;)
トライアルが公開された時に入手したんですが、マシンのスペックがついて行かなくて試すことすら断念したんです。。(泣) #時期的にVSの環境も変えたくなかったというのもあるのですが。。 _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ |