一部の変数名に camelCase構文 を適用する方法を理解するのに問題があります。
たとえば、キャメルケースで「phonenumber」のような単語を正しく書くにはどうすればよいですか? phoneNumber
またはphonenumber
ですか?同様に、「username」の場合、username
またはuserName
ですか?
motorCycle
、passWord
、sunDay
、setUp
またはwaveLength
のようなキャメルケースでは正しくないようです。それぞれ1単語。ハッシュテーブルは1ワードで、ハッシュマップは2ワードなので、キャメルケースではhashMap
と呼ばれますが、キャメルケースでは大文字なしでhashtable
とも呼ばれるのは、このためだと思います。
しかし、バイクに色がある場合、Wordが連結されているので、それはmotorcycleColor
になりますか?それは正しいですか、それともphoneNUmber
、waveLength
、sunBlock
、さらには週の日曜日のsunDay
である必要がありますか?
たとえば、getISOCountries
と呼ばれているメソッドがHttpHeaders
であるのはなぜですか。 String camelCaseString = dog.toCamelCase()
やinterface CamelCase
のようなメソッドがある場合、小文字が何になるかは明確ではありません。
「通常は」スペースがある場所(ソースコードの代わりに文字を書く場合)の後、文字を大文字にする必要があります。あなたの最初の仮定は正しいです:
motorcycle
ではなくmotorCycle
とする必要があります。hashMap
ではなくhashmap
を使用します。sunday
であり、sunDay
ではありません。dayOfWeek
ですが、dayofweek
ではありません。パート1
私があなたをつまずかせているのは、あなたの例のいくつかは 複合語 であるのに対し、他の例はそうではないと思います。
複合語は、複合語の2番目の語のキャメルケース表記に従いません。
つまり、motorcycle
ではなくmotorCycle
です。
しかし、「電話番号」は複合語ではなく、キャメルケース表記に従います。つまり、phoneNumber
です。
そしてそれはmotorcycleColor
につながります。
単語が本当に複合語かどうか思い出せない場合は、辞書で調べて確認します。
パート2
2つの例は少しトリッキーです。
「hashmap」や「hashtable」と綴る人もいるので、注意が必要です。私がチェックしたばかりの辞書によると、それらは別々の単語であり、複合語ではありません。したがって、正しいキャメルケースはhashMap
とhashTable
になります。すべてのチームがその慣例に従っているわけではないため、チームメイトに何を好むかを尋ね、それを守る必要があります。この場合、辞書は正しいと言うよりも一貫性が重要です。
*一部の人は、他の曜日はそうではないので、日曜日が複合語であると主張しますが、この質問の目的のために、その問題を回避します。複合語として扱うのが最も簡単なので、ラクダのケースはありません。
他の人が指摘したように、言葉をつなぐときにキャメルケースが使われます。単一の英語の単語内でキャメルケースを使用しないでください。問題は、どの化合物が単一の単語であるかを決定することです。プログラマは自分たちに任され、英語の知識に応じてさまざまな決定を下します。これは大文字と小文字の不一致につながり、スペルミスと同じくらい煩わしくなります。
これを防ぐために、プログラマは、スペルまたは大文字と小文字の区別がわからない場合、標準的な参照(例 dictionary.com )を使用する必要があります。それでも、ネーミングの一貫性がプロジェクトにとって重要である場合、コードレビューに代わるものはありません。
プロジェクトの参照を1つ選択すると、大文字とスペルに関するほとんどの議論が解決されます。辞書にはないが、JavaおよびC#APIでは単一の単語として大文字で示されているHashtableのような化合物があります。それらについてプロジェクト全体の決定を行う必要があります。Javaでは、 「HashMap」ですが、「Hashtable」です。IMO「Hashtable」は明らかに正しくありません。APIでの名前として以外、単一のWordとして表示されることはありません。
ラクダ事件を行う最も簡単な方法は、単語の描写です。
あなたの質問の例:
2つの単語に分割しない場合は、キャメルケースも使用しないでください。そうでなければ、音節でそれを使用していて、これはどのように愚かに見えますか
これは、単純な英語の複雑さが、プログラミングコンテキストでトークンの空白のルールに合わせるために後で英語を悪用する方法の邪魔になる場所です。
あなたが与える例の言葉のうち、ほとんどすべてが複合語です。 Sundayではありません。これは化合物として発生したものですが、非常に古く、現在はほとんど考えられていません。特に、太陽に捧げられていることは、英語を話す人々の宗教的および文化的展望の強い部分。
また、英語では、複合語を書く主な3つの方法は、オープン(2つの単語の間にスペースあり)、ハイフン付き、クローズ(2つの単語の間にスペースやハイフンなし)です。また、特定の状況でオープンコンパウンドをハイフンでつなぐことについてはいくつかのルールがありますが、特定のコンパウンドにどのような形式が使用されているかを知るための確かなルールは、他の人が何をしているのかを見る以外にあまりありません。 '2つまたは3つすべての形式を検索します(eggbeater、Egg-beaterおよびEgg beaterなど)。
ここでは電話番号はほとんどの場合オープンに書かれているので、2つの単語として扱う必要があります。
また、インターキャッピングしてトークンを形成すると、スペースまたはハイフンが削除され、2番目以降のWordがタイトルケースで書き込まれるため、慣習に応じてphoneNumber
またはPhoneNumber
になります。
phoneNumber
を奇妙に思わせるのは、ほとんどのコンテキストではphone
として、またはコンテキストが電話接続に関するものである場合はnumber
としてより一般的に与えられることです。
コードファイル内の一貫性を保証します。
コードプロジェクト内の一貫性を促進します。
コードライブラリ内の一貫性を優先します。
与えられた 凝集 に慣れるにつれて、概念を表す単語の合成が変化します。
例...
StackExchangeスペルチェッカーは決定を下すことができないことに注意してください。上記の文の最後にある「電話番号」は問題ありませんでしたが、文頭にある「電話番号」(大文字かどうかにかかわらず)を示しています。
言語に関して言えば、ほとんどの人が物事を行うための「正しい方法」が存在することを望んでいるのと同じくらい、それは決してあり得ません。プロジェクトが完了するまでに、使用法はおそらく変更されています。確かに、あなたの理解は変化し、method/et.alの機能は変わります。おそらくあまりにも変更されます。 (その場合、おそらく名前を適切に変更する必要があります。)