2012-01-12 2 views
2

ローカル変数と区別するために、変数の名前付けに接頭辞アンダースコアを使用しました。変数名のための_iVarとiVar_

私は「のGoogleのObjective-Cスタイルガイド」を見て起こった、そしてなぜについての詳細な説明なしに、(HEREそれを参照してください)、それは末尾のアンダースコアを使用することを示唆していることがわかりました。

私はそれがコーディングスタイルの問題であることは知っていますが、後ろのアンダースコアを使う利点はありますか?

+0

ああ... SOには適していませんか?コメントを残してください。 :( – Kjuly

+0

「正解」の方が主観的な話題のほうが – jrturton

+0

ありがとう@jrturton、しかし、私は「iVar_」に関するいくつかの理由を説明するには良い答えが必要なので、これを私の同僚に見せて議論することができます彼と一緒に:p – Kjuly

答えて

3

関連:Question about @synthesize(答えの下部にblockquotesを参照)
利点がある:_varは、民間の規則(C99、ココアのガイドライン)であるが、それはAppleのこと(でもアップルテンプレート上)ので、一般的ですダブルアンダースコア__varを使用します。 Googleでは代わりに末尾のアンダースコアを使用して解決します。

私は性質 (大手を追加してみてくださいがモデルにアンダースコア先頭にアンダースコアもC++( What are the rules about using an underscore in a C++ identifier?を参照)、コアデータに落胆しているカップルより多くの理由...

と他の答えを更新し、 「 の名前は文字で始める必要があります」と表示されます)。

末尾のアンダースコアは賢明な選択ですが、 が何か他の場合は衝突が起こりそうにない場合は、 コンパイラから警告が表示されます。

+0

!それは私が考える重要なポイントです! – Kjuly

+0

_Appleは、変数名が私たちと衝突しないように、ivarsに単一の先頭のアンダースコアを使用します。あなたのivarsに名前を付けるときは、@ NSResponderが述べたように、先頭の1つのアンダースコア以外のものを使用してください。そのため、Googleはこの矛盾を解決するためにアンダースコアを使用します。 – Kjuly

+1

彼らは言わなかったが、それを考える理由は複数ある。 – Jano

3

接頭辞アンダースコアは通常、システム/ SDKライブラリで使用されます。接頭辞のアンダースコアを使用すると、スーパークラスの変数がオーバーライドされ、このようなバグが見つからないことがあります。 NSViewのような、システムが提供するクラスを見てください。

+0

ええ、それについて聞いたことがありますが、XCode4がインスタンス変数の前にアンダースコアを含むようにアプリケーションテンプレートを更新することに気付きました。 – Kjuly

0

末尾のアンダースコアを使用するような利点はありません。我々はコードの読みやすさを容易にするようにコーディングスタイルに従います。この場合、UnderscoreはiVarsとローカル変数を区別するのに役立ちます。私の知る限りでは、_iVarはより顕著ですiVar_

+0

ママ...私はそれでもコーディングスタイルに従いたいですが、私の同僚は '_iVar'を好みます。彼を説得する正当な理由が必要です。 :p – Kjuly

+0

なぜ彼はiVar_を使用するように説得したいのですか? _iVar –

+1

が同意すると何も問題はありません。私にも利点はありません。 – ZhangChn

0

ほとんどすべてのプログラミング言語は、英語をベースにしており、左から右への書き込みと読み込みが行われています。
先頭のアンダースコアを使用すると、iVarsを見つけやすくなり、変数がiVarであることを認識することができます。

+0

うん、 '_iVar'はイーバールを見つける方が便利です。しかし、あなたが見るように、_Google Objective-Cスタイルガイドは「iVar_」を提案しています。 – Kjuly

+0

Googleドキュメントでは、なぜそれらが末尾のアンダースコアを使用することを示唆しているのか説明していません。さらに、私は、地域変数の命名において、ハンガリー語表記法を放棄することの提案に同意しない。 –

1

アップルはivarsに1つの先頭のアンダースコアを使用しているため、変数名が私たちと衝突しません。あなたのイヤーズの名前をつけるときは、以外にはの先頭に1つのアンダースコアを付けてください。

+0

Googleはこの競合を解決するために単一の先頭のアンダースコアの代わりに末尾のアンダースコアを使用していますか? – Kjuly

関連する問題