- - PR -
メソッド内の変数定義位置
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-14 13:12
VB.NET(VS2003)でプログラムを書く場合について
質問です。 「一般的に変数定義は、 メソッドの最初にまとめて行うべきものなのでしょうか?」 Public Sub メソッド名 '変数定義 Dim 変数 As 型名 Dim 変数 As 型名 : : Dim 変数 As 型名 〜数百行から数千行の処理内容〜 End Sub というソースをよく見かけますが、 ある一部分でしか使用しない変数が冒頭部に集中して 何のための変数であるかわからなくなるため わかりやすい変数名をつけ、さらにコメントで補うことが必要になってくると思います。 であるならば変数を冒頭で定義することにこだわらないほうが良いのではと思い、 私の場合、変数内全般で使用する変数以外は、極力冒頭で宣言せず、 必要になった際に初めて、変数の定義(+初期化)を行うようにしています。 また、 一箇所からしか呼び出されないロジックを Privateなメソッドとして切り出すのもどうかと思い、 スコープ狭めるためだけに、 Try 〜 Catch で囲んで、 その中で変数を定義したりすることもあります。 正解はないのかもしれませんが、もっとも読みすくバグの出にくい コーティング方法について、皆さんのご意見をお聞かせください。 | ||||||||||||||||||||
|
投稿日時: 2006-05-14 13:23
特にプロジェクト内で規定がなければ、使う直前に宣言 && 初期化が良いされています。 それと、ブロックレベルのローカル変数についても調べてみる必要があると思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-05-14 13:31
少し以前の言語ならば、先頭でしか宣言できなかったという事もあり、それに拘っている人もいるかもしれませんね。
今は新しい言語を使っているのですから、私も使う直前に宣言するほうが良いと思います。
ん〜、意味なく Try Catch するのは変ですね。C# の場合はこういうときは、{} ブロックだけ書けるのですが…。 _________________ 囚人のジレンマな日々 | ||||||||||||||||||||
|
投稿日時: 2006-05-14 13:48
なるほど、ここはそういう意味だったのですね。 こちらのスレッドを思い出しました。 VBのWithってC#でどう書くんですか? (>>9) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-05-14 13:59
やはり現在は使う直前の方が良いとされているのですね。 ちなみにそういった現在一般的に推奨的され るコーティング規約のようなことが書かれている HPをご存知でしたら教えていただけませんでしょうか? 開発メンバーの中には、未だにfor分のループカウンタ(i,j,k)ですらメソッド冒頭に 書いてくるような人間も多いので(^^: [ メッセージ編集済み 編集者: ハニワ祭り 編集日時 2006-05-14 13:59 ] | ||||||||||||||||||||
|
投稿日時: 2006-05-14 14:00
そんなことないと思いますよ?(^^) 僕は、昔から使用する直前で書いてましたし、じゃんぬねっとさんも、同様に書い ていると仰っていました。 VB6以前なら、そういう書き方をしている例は何度か見かけました。 また、昔の関連書籍などのサンプルコードも、そのように書いているものも多かっ たのです。 しかし、VB.NET からは、変数のスコープがブロック内のみになっていることから、 使用する直前で書く方が自然になってきているように思います。
上記の例は、ちょっと凄いですね(^ー^;) メソッドやプロパティは、1画面内に収めるように書くのが好きです。 大量に長くなる場合は、目的語とに別のメソッドに抽出したり、独立性が高ければ クラスに分けるなどします。
そうしなくても良いように、長くなってもわかりやすい変数名を適所に配置するのが よいですよね(^^)
切り出しちゃって良いと思いますよ?(^ー^;) リファクタでもメソッドの切り出し機能が付いているように、1処理1メソッドに する方法をお勧めします。 ただ、僕の場合は、一箇所からしか呼び出さないメソッドは、呼び出し元のメソッ ドとともに、#regin で括っちゃいます。 こんな感じです。
こうして普段たたんでおくと他からは関係ない「ある人の居場所を取得する」ため の手順などもまとめて1行にまとまるので全体を眺めるときに、とてもわかりやす くて気に入っています。 また、メソッドを分けるメリットとしては、探す方法に「携帯電話に電話してみる」 が抜けていることや、この方法を、どの優先順位に含めるか?、などが一目瞭然に なります。 | ||||||||||||||||||||
|
投稿日時: 2006-05-14 14:05
CodeComplete という評判の良い書籍を購入してみてください。 この書籍は、ブロック スコープのない VB6 ですらそのようにすべきだと書いています。 もっと検索すれば、Web サイトでもこういった記述を見つけることができると思いますが、 逆に、VB6 系のサイトは、先頭で宣言しているものが多かったりしますw
ループカウンタとしてしか使わないような変数は、使用できる場所を限定した方が絶対に良いでしょうね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||||||||||
|
投稿日時: 2006-05-14 14:09
おおっ、これは僕が CShaper に華麗に転身した直後に立てたスレで、相変わらずじ ゃんぬねっとさんにお世話になっているところですね。 随分、懐かしいものを・・・( ̄  ̄;) C# では、いきなり
などと書けるんですよね。感動ものです。 先ほどは、生まれて初めて C# で do〜while っちゃった(≧▽≦)イエイ! #明るく振舞っているけど仕事中・・・(T−T) |
1|2|3
次のページへ»