- PR -

me について

投稿者投稿内容
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-02-14 09:04
未だに良くわかっていないのですが。
付けるとインスタンス経由ということらしいのですが、どのように使い分けるのが良いのですか?

コード:
public class クラス
    private 番号 as integer
    private 名前 as string

    public sub new(byval 番号初期値 as integer, byval 名前初期値 as string)
        me.番号 = 番号初期値
        me.名前 = 名前初期値
        if (not me.番号の値は有効値()) then
            throw (new ArgumentOutOfRangeException("番号値が無効です"))
        end if
    end sub

    public function 番号の値は有効値() as boolean
        return(me.番号 > 0)
    end function
end class



僕がわかるのは、me. をつけるとインテリセンスが使えますが、コードが冗長化するという点のみです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-14 09:07
引用:

R・田中一郎さんの書き込み (2006-02-14 09:04) より:

僕がわかるのは、me. をつけるとインテリセンスが使えますが、コードが冗長化するという点のみです。


コードが冗長化するのがイヤなのであれば、VB も C# も Java も使えないかも。
Me をつけることで、インスタンス メンバであることを "明示化" できます。
今操作中のメンバを使っているということで、非常に見やすいです。

# 旧 VB では Friend 以上のメンバにしか付けることができなかったので不満でした。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-02-14 09:17
むしろ使い分けないほうが良いんじゃないでしょうか
つけるなら全部つける、つけないなら全部つけない。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-14 09:22
引用:

Me をつけることで、インスタンス メンバであることを "明示化" できます。
今操作中のメンバを使っているということで、非常に見やすいです。


私は逆に不必要に感じてつけるの嫌かなぁ。
VS が自動で吐くコードがバシバシ使うのが少し不満です。

コード:
Public Sub New(ByVal 番号 As Integer, ByVal 名前 As String)
    Me.番号 = 番号
    Me.名前 = 名前
    If (Not 番号の値は有効値()) Then
        Throw (New ArgumentOutOfRangeException("番号値が無効です"))
    End If
End Sub


使うとしたら、このように明らかに区別したいときですね。
引数に「〜初期値」という名前が好かないからです。
_________________
囚人のジレンマな日々
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-14 09:41
引用:

囚人さんの書き込み (2006-02-14 09:22) より:

私は逆に不必要に感じてつけるの嫌かなぁ。
VS が自動で吐くコードがバシバシ使うのが少し不満です。


そぅ? 囚人さんの例だと、ローカル外であることを明示化できて好きなんですが。
まあ、長いメソッドなんて組まないから関係ないかもしれないけど、青い彩も欲しいw

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-02-14 10:28
引用:


じゃんぬねっとさんの書き込み (2006-02-14 09:07) より:

コードが冗長化するのがイヤなのであれば、VB も C# も Java も使えないかも。
Me をつけることで、インスタンス メンバであることを "明示化" できます。



僕もそう思ったので、最近は me. を必ず付けるようにしていたのです。
しかし、ふと気が付くと、me. の量があまりに凄かったので、皆さんなにか使い
分けしているのだろうか?、などと思ってみたりした訳です。

ただ、確かに .net になってから1行で済むところが複数行なったりするので、
逆に読みにくくなっている気もしています。
でも、わかりやすい名前をつけると、どうしても長くなってしまうんですよね。
[/quote]

引用:

かるあさんの書き込み (2006-02-14 09:17) より:
むしろ使い分けないほうが良いんじゃないでしょうか
つけるなら全部つける、つけないなら全部つけない。



そうですね。特に使い分けのガイドラインのようなものが無いのなら、今まで
通り全部つける方向で行こうと思います。

引用:

囚人さんの書き込み (2006-02-14 09:22) より:

コード:
Public Sub New(ByVal 番号 As Integer, ByVal 名前 As String)
    Me.番号 = 番号
    Me.名前 = 名前
    If (Not 番号の値は有効値()) Then
        Throw (New ArgumentOutOfRangeException("番号値が無効です"))
    End If
End Sub


使うとしたら、このように明らかに区別したいときですね。
引数に「〜初期値」という名前が好かないからです。




そうですね。こんな風に書けたんですね。全く気が付きませんでした。
これから、僕も真似することにします。

皆さん、ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-14 11:31
引用:

R・田中一郎さんの書き込み (2006-02-14 10:28) より:

そうですね。こんな風に書けたんですね。全く気が付きませんでした。
これから、僕も真似することにします。


私見です。

引数とインスタンス メンバの名前の衝突は明示化すれば問題になりませんが、
ややこしいので、私は明示的に名前をわけることにしています。
それでも Me や this キーワードをつけますけど。(全部)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-02-14 11:42
引用:

そうですね。こんな風に書けたんですね。全く気が付きませんでした。
これから、僕も真似することにします。


引用:

私見です。

引数とインスタンス メンバの名前の衝突は明示化すれば問題になりませんが、
ややこしいので、私は明示的に名前をわけることにしています。


真似しないでぇ。私も名前を分ける方を推奨します。
さっきのは「Me、thisを使うとしたら」というただの例です^^;

コード:
public class クラス
    private 番号 as integer
    private 各前 as string

    public sub new(byval 番号 as integer, byval 名前 as string)
        me.番号 = 番号
        me.各前 = 各前
        if (not 番号の値は有効値()) then
            throw (new ArgumentOutOfRangeException("番号値が無効です"))
        end if
    end sub

    public function 番号の値は有効値() as boolean
        return(番号 > 0)
    end function
end class



コード:
public class クラス
    private _番号 as integer
    private _名前 as string

    public sub new(byval 番号 as integer, byval 名前 as string)
        _番号 = 番号
        _名前 = 名前
        if (not 番号の値は有効値()) then
            throw (new ArgumentOutOfRangeException("番号値が無効です"))
        end if
    end sub

    public function 番号の値は有効値() as boolean
        return(_番号 > 0)
    end function
end class


上の方のクラスはバグってるんですが一目でわかり難い。タイプミスは誰でもしますからね^^;
_________________
囚人のジレンマな日々

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