アカウント名:
パスワード:
2005 年あたりから ReSharper という Visual Studio というアドインを利用しています。ReSharper のデフォルト設定は _ 付きだったので、それが普通なんだと思って、そのときから _ 付きに変えてます。
> 本家のC#においては、プレフィックスを付けずに this. で参照する文化があり
ASP.NET Core のフレームワークのソースコードも _ 付きなので、_ 付けないほうが少数派だと思っていました。
個人的には統一されていて、コードチェッカーでちゃんと検査してくれるならどっちでもいいんじゃないかと思いますが。
自分の観測範囲だと、Microsoft の名前付け規約無視している人たち (そもそも知らない) が多いので、混乱なんか起きないんじゃないかなあと思います。
thisで参照する文化というよりもVisualStudioのエディタでthis.と入力するとインテリセンスでフィールド/プロパティ/メソッド/イベント各種が候補に出るので判り易いからだと思うけど。だからthis.と手癖で入力する。
あと、変数とフィールドを同じ名前にしてしまってバグる可能性が減らせる。
あった方が読みやすくて好きだったけどなVBのMeとどちらかに揃えてくれとは思ったけど
むしろ、thisを付けると変数とフィールドを同じ名前にできて楽だと考えて使ってた。
public Dog(string name) { this.name = name; }
こういう所でnameを受け取るためだけに毎度適切な名前を考えるのが邪魔くさい。考えなくて済むようにしよう、とすると、悪名高いプレフィックスが出てくる。
public Dog(string name) { mName = name; }
あるいは、
public Dog(string _name) { name = _name; }
か
public Dog(string name) { _name = name; }
このパターンはクラスの属性とクラスが属するスコープで変数名が被ってるだけだから同じ名前を使えるのでは?
つかえるし、使わないと名前考えるのめんどくさいから、thisつかって同じ名前でやってますって話だと思うぞ。
使わなくても違う名前を考える必要などないという話だが。
どこに対してツッコミを入れてるのかわからなかったが、(this を)使わなくても というつっこみなら、
は this は使わないとだめ。クラスの属性といっているので、暗黙に name フィールドは存在する。
(これ以外のサンプルは、thisを使わないとめんどくさくなるという話なので関係ない。)
使えますね。暗黙的にコンパイラが this.name = name; だと理解してくれますただ、警告は出るし this.name = name; にしろと言ってきます
public class Dog { private string name; public Dog ( string name ) { name = name; // VisualStudioだと「同じ変数が割り当てられた」と警告してくる }}
そんな VB6のMeみたいな使い方・・・
プロパティやメソッドやイベントに thisつけるのは勘弁して欲しいなぁ。あとで消してるならいいけど。(人が作ったクラスとかで一時的に検索するためにならわかる。クラス内だとをリューションエクスプローラでメソッド検索したり、メソッド一覧ウィンドウ表示するほどじゃないしね。)
その場で ctrl + space とか、名前をわかりやすくしてればそんなにお世話にならないと思うんだけども。参照が多すぎるか逆にクラスライブラリに分離してないのか。
んーとthis使う場合はthis._varになるんでは?外化は見えない変数にプレフィックスつけるというのとオブジェクト内の変数にアクセスするときにthisをつけると言うのは別々の話で同時にやるときがある。
> 別々の話でうん。
> 同時にやるときがある。うん?
var this._var = 100;とかやりません?あとはvar this.var = this._varvar*100;とかやりません?あとは
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
_ 付きが普通だと思ってました... (スコア:1)
2005 年あたりから ReSharper という Visual Studio というアドインを利用しています。ReSharper のデフォルト設定は _ 付きだったので、それが普通なんだと思って、そのときから _ 付きに変えてます。
> 本家のC#においては、プレフィックスを付けずに this. で参照する文化があり
ASP.NET Core のフレームワークのソースコードも _ 付きなので、_ 付けないほうが少数派だと思っていました。
個人的には統一されていて、コードチェッカーでちゃんと検査してくれるならどっちでもいいんじゃないかと思いますが。
自分の観測範囲だと、Microsoft の名前付け規約無視している人たち (そもそも知らない) が多いので、混乱なんか起きないんじゃないかなあと思います。
Re:_ 付きが普通だと思ってました... (スコア:1)
thisで参照する文化というよりもVisualStudioのエディタでthis.と入力するとインテリセンスでフィールド/プロパティ/メソッド/イベント各種が候補に出るので判り易いからだと思うけど。だからthis.と手癖で入力する。
あと、変数とフィールドを同じ名前にしてしまってバグる可能性が減らせる。
Re: (スコア:0)
あった方が読みやすくて好きだったけどな
VBのMeとどちらかに揃えてくれとは思ったけど
Re: (スコア:0)
むしろ、thisを付けると変数とフィールドを同じ名前にできて楽だと考えて使ってた。
public Dog(string name) { this.name = name; }
こういう所でnameを受け取るためだけに毎度適切な名前を考えるのが邪魔くさい。
考えなくて済むようにしよう、とすると、悪名高いプレフィックスが出てくる。
public Dog(string name) { mName = name; }
あるいは、
public Dog(string _name) { name = _name; }
か
public Dog(string name) { _name = name; }
Re: (スコア:0)
このパターンはクラスの属性とクラスが属するスコープで変数名が被ってるだけだから同じ名前を使えるのでは?
Re: (スコア:0)
つかえるし、使わないと名前考えるのめんどくさいから、thisつかって同じ名前でやってますって話だと思うぞ。
Re: (スコア:0)
使わなくても違う名前を考える必要などないという話だが。
Re: (スコア:0)
どこに対してツッコミを入れてるのかわからなかったが、
(this を)使わなくても というつっこみなら、
public Dog(string name) { this.name = name; }
は this は使わないとだめ。
クラスの属性といっているので、暗黙に name フィールドは存在する。
(これ以外のサンプルは、thisを使わないとめんどくさくなるという話なので関係ない。)
Re: (スコア:0)
使えますね。暗黙的にコンパイラが this.name = name; だと理解してくれます
ただ、警告は出るし this.name = name; にしろと言ってきます
public class Dog {
private string name;
public Dog ( string name ) {
name = name; // VisualStudioだと「同じ変数が割り当てられた」と警告してくる
}
}
Re: (スコア:0)
そんな VB6のMeみたいな使い方・・・
プロパティやメソッドやイベントに thisつけるのは勘弁して欲しいなぁ。あとで消してるならいいけど。
(人が作ったクラスとかで一時的に検索するためにならわかる。クラス内だとをリューションエクスプローラでメソッド検索したり、メソッド一覧ウィンドウ表示するほどじゃないしね。)
その場で ctrl + space とか、名前をわかりやすくしてればそんなにお世話にならないと思うんだけども。
参照が多すぎるか逆にクラスライブラリに分離してないのか。
Re: (スコア:0)
んーとthis使う場合はthis._varになるんでは?
外化は見えない変数にプレフィックスつけるというのとオブジェクト内の変数にアクセスするときにthisをつけると言うのは別々の話で同時にやるときがある。
Re: (スコア:0)
> 別々の話で
うん。
> 同時にやるときがある。
うん?
Re: (スコア:0)
var this._var = 100;とかやりません?
あとは
var this.var = this._varvar*100;とかやりません?
あとは