- PR -

Region どう使えば便利なんでしょう??

投稿者投稿内容
ハルシオン
常連さん
会議室デビュー日: 2005/03/29
投稿数: 24
投稿日時: 2005-12-13 21:56
いつも拝見させていただいております。

早速ですが、.NETの #Region の機能、これを
日ごろから活用されている方、こんな風に使うと便利だよ〜っていう
使い方を教えてください。
(VB.NETしか使ったことないので、C#だと表記方法が違うかもしれないです…
 無知ですいません)

私はほとんど使っていません。。。。
というか、有効な使い方が判らないと言ったほうが正確です…
きっと、目からウロコ的な使い方をしてらっしゃる方がいるのではないでしょうか。

よろしくお願い致します

渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-13 23:30
引用:

早速ですが、.NETの #Region の機能、これを
日ごろから活用されている方、こんな風に使うと便利だよ〜っていう
使い方を教えてください。



以下を region で括っています。

・列挙体定義
・デリゲート定義
・イベント定義
・インターフェース定義
・構造体定義
・クラス定義
・フィールド
・プロパティ
・構築
・廃棄
・実装
・操作
・オーバーライド
・xxx メンバ
・イベントハンドラ

MFC の影響が少し残ってるのかな?

# 「イベントハンドラ」を追記。


[ メッセージ編集済み 編集者: 渋木宏明(ひどり) 編集日時 2005-12-14 08:42 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-14 01:31
ひどりさんに付け足しになりますが、プロパティを #region で括る場合は、
プロパティ変数とプロパティ定義をひとまとめにして括っています。
(変数は使う直前に定義/宣言することを考えると自然だと思います)

コード:

#Region " Code プロパティ "

    Private _Code As Integer

    Public Property Code() As Integer
        Get
            Return _Code
        End Get

        Set
            _Code = Value
        End Set
    End Property

#End Region


実際には、以下のリンクのような感じです。

  JavaScript で #Region を再現するテストページ

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-14 08:45
引用:

ひどりさんに付け足しになりますが、プロパティを #region で括る場合は、
プロパティ変数とプロパティ定義をひとまとめにして括っています。



プロパティ1個とかメソッド1個の単位で括るのは挫折しました (^^;

IDE のエディタが、#region のネストをもっと上手に扱ってくれるようになったら戻るかも。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-14 09:34
引用:

渋木宏明(ひどり)さんの書き込み (2005-12-14 08:45) より:

プロパティ1個とかメソッド1個の単位で括るのは挫折しました (^^;
IDE のエディタが、#region のネストをもっと上手に扱ってくれるようになったら戻るかも。


ひどりさんのこの気持ち、すごく判ります。(^^;)
VB はインデントなしの状態で括られますし、
C# はインデントが同一レベルで括られてしまいますよね。
そのおかげで、返って見にくくなることもしばしばあります。

実際には、C# でも VB でも #region でインデントを、2 スペース取るようにしています。
ただ、C# は #endregion の時点で勝手に補正されちゃうので、結構イライラします。
(再フォーマットを完全に無効にできないです)

コード:

[C#]
public class TClass {

  #region Method1 メソッド 

    private void Method1() {

    }

  #endregion

}

コード:

[VB]
Public Class TClass1

  #Region " Method1 メソッド "

    Private Sub Method1()

    End Sub

  #End Region

End Class


ただし、これはメソッドとプロパティに限った話で、
プライベートなフィールドや定数などは、ひとまとめで括ります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
スープカレー
会議室デビュー日: 2005/11/28
投稿数: 5
投稿日時: 2005-12-14 09:46
私の場合クラス定義の内部で以下の項目を大枠としてRegionを適用します。

コンストラクタ
フィールド
プロパティ
メソッド
イベントハンドラ
内部クラス
インターフェース実装

そして上記の項目に対し必要であれば詳細な区分けを行いますが、大抵はメソッドとイベントハンドラのみネストしたRegionを記述します。以前は、publicやoverrideのような修飾子別の区分けをしていたのですが最近は機能単位での区分けを行ったほうが分かりやすいかなと思ってます(初期化コード、データ操作コードなど)。

渋木宏明(ひどり)さん:
>プロパティ1個とかメソッド1個の単位で括るのは挫折しました (^^;
>IDE のエディタが、#region のネストをもっと上手に扱ってくれるようになったら戻るか
>も。
 Eclipseのフォールディングみたいな機能がVisual Studioに追加されると嬉しいかもですね。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-14 09:52
そういえば、C# ではメソッド内などでも、#region ディレクティブが使えますよね。
私は使ったことがありませんが、使われている方はいらっしゃいますか?

私の場合、まとめるくらいならメソッドにしちゃいます。(^^;)
構造化言語からの基本がそういうものですし、コメントも簡素化できますからね。

最初、スレッド タイトルを見た時、System.Drawing.Region クラスのことかと思いました。
「#Region ディレクティブ」とした方が良いかもしれませんね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
スープカレー
会議室デビュー日: 2005/11/28
投稿数: 5
投稿日時: 2005-12-14 10:35
引用:

じゃんぬねっとさんの書き込み (2005-12-14 09:52) より:
そういえば、C# ではメソッド内などでも、#region ディレクティブが使えますよね。
私は使ったことがありませんが、使われている方はいらっしゃいますか?

私の場合、まとめるくらいならメソッドにしちゃいます。(^^
構造化言語からの基本がそういうものですし、コメントも簡素化できますからね。



私の勤務先にこれやっちゃう人がいます(しかもこの方以前に構造化言語のなんたるかを語っていたような気が...)。じゃんぬねっとさんの言われるとおりのつっこみがバシバシと行われていますね(^^)。こんなのやる人がいるくらいだから規約にRegionの利用法もあったほうがいいかなと思ったりします(標準コーディング規約にはあまり厳密なものがなかった気がするので)。

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