回答
ほとんどの人が言及しているように-既存の標準を使用します。「新しいプロジェクトの場合は、使用する言語とフレームワークの標準を使用します。
混乱しないでください、これは読みやすさ(主観的)ではなく、一貫性と専門性についてです。多数の「標準」が実行されているコードベースで作業したことがある人なら誰でも理解できます。
回答
私は時々ミックスを使用します。 module_FunctionName。モジュール内のすべての(非静的)関数は、モジュールの省略形で始まります。
たとえば、I2Cバスでバッファのコンテンツを送信するための関数:
i2c_BufferSend()
代替のi2c_buffer_send
は、プレフィックスと関数名の間に十分な間隔がありません。i2cBufferSend
がプレフィックスが多すぎます(このモジュールにはかなりの数のI2C関数があります)。
i2c_Buffer_send
が代替手段であった可能性があります。
私の答えは、プロジェクトに最適なもの(言語、SWアーキテクチャなど)に適応することです。これらのスタイルを組み合わせると便利な場合があることを指摘したいと思います。
myGeneralOpinionIsThatNamesAreMuchHarderToReadInCamelCase。 I_respect_the_fact_that_some_could_think_otherwise_but_I_do_not_really_understand_why。
コメント
回答
個人的に、私はキャメルケースが好きですが、一部のフォントでは下線が読みやすいと思います。
変数のセットを区別するためにプレフィックスを使用する必要がある場合は、名前付けを作成できる言語を使用することをお勧めしますまたはオブジェクトまたはその情報を保持するための何か。
myName = 7 bobsName = 8 // :( me.name = 7 bob.name = 8 // :D
同様に、型を区別する必要がある場合は、それらを許可する言語を使用してみませんか?
var intThingy = 7; // :( int thingy = 7; // :)
名前をメタデータとして使用するだけでなく、その名前をそのまま使用すると、十分な長さの名前が得られなくなります。その余分なキー押下を好むかどうかは非常に重要です。
コメント
- camelCaseまたはunderscore_caseを使用する理由の1つは、' tを使用しないためです。オブジェクトの定義を見つけて、それが何であるかを識別する必要があります。
回答
最初は、dafmetalに同意します。最も重要なのは、異なるプログラミングスタイルを混在させないことです。これを1つの同じファイルで実行することは、私見で実行できる最悪の事態です。さまざまなファイル間で、気が散ることはありますが、致命的ではありません。
次に行う必要があるのは、記述している言語で一般的な命名規則です。インスタンス用の私のC ++コードは明らかにPythonの場合とは異なって見えます(ここではPEP8が優れたガイドです)
定数にUPPER_CASEを使用するのと同じように、さまざまな命名規則を使用してさまざまなものを参照することもできます(これは特定の場合にのみ適用されます)もちろん言語)、ローカル変数名にはthis_styleを使用できますが、インスタンス/メンバー変数にはキャメルケースを使用します。ただし、self
やthis
などがある場合は、これは必要ない場合があります。
更新
プラットフォームを使用している場合を考えてみましょう。Foowitchは命名規則を推奨せず、チームリーダーが1つを選択します。あなたはそのチームリーダーです。なぜキャメルケースを選ぶのか、なぜunderscore_caseを選ぶのでしょうか。
どちらにも利点はありません。この問題は非常に主観的であり、一度合意されると、違いはありません。これらの小さなことについては、常にこれらの宗教的な戦争があります。しかし、どちらかに慣れると、議論はまったく不要に思えます。
非常によく似た問題についてAlexMartelliを引用するには:
確かに、Rubyでは、(インデントを解除するだけでなく)各ブロックの最後に愚かな「end」を入力することにうんざりしますが、同じように愚かな「:」を入力することは避けられます。 Pythonは、各ブロックの start で必要なので、「ほとんどウォッシュ:-)」です。「@ foo」と「self.foo」などの他の構文の違い、または大文字と小文字の区別の高さRubyとPythonは、私にはまったく関係ありません。
他の人は間違いなくそのような問題に基づいてプログラミング言語を選択し、最も熱い議論を引き起こしますが、私にとってはそれは単なる実行中のパーキンソンの法則の1つの例(問題に関する討論の金額は、問題の実際の重要性に反比例します)。
出典
チームリーダーの場合は、1人で行ってください。一方にはもう一方に勝る利点がないため、サイコロを投げるか、好きなものを選ぶことができます。
回答
数年前に、第一言語として英語を話さないプログラマーは、キャメルケースを理解しやすいアンダースコアのケースを見つける傾向があると読みましたが、参照を見つけることができず、それが本当かどうかわかりません。
回答
Java、Python、C ++など、私が使用したプログラミング言語には、明確な形式を採用しました。
- ClassNamesArePascalCase
- methodNamesAreCamalCase
- variable_names_are_underscore
- CONSTANT_VARIABLES_ARE_CAPITAL_VARIABLES
これにより、次のことが可能になります。自分が何を扱っているかをすぐに見分けます。自分自身で維持するのに役立ち、コードを読んでいる他の人にとっても簡単に理解できるはずです。他の人が言っているように、一貫性が最も重要だと思います。それで、自分のフォーマットを見つけました。名前のタイプを明確に区別しながら、維持するのに十分シンプルにする必要があります。interface_Names_Are_Like_ThisとAbstract_Classes_Are_Like_Thisを可能な拡張として想像できますが、従うのがより複雑で、区別するのにそれほど有用ではないようです。
また、厳密に指定して、HTMLパーサーの代わりにHtmlParserとしてHTMLパーサーなどの名前をPascalCaseで使用すると便利であることがわかりました。 HTMLparser。厳密なルールを覚えやすく、単語の境界を明確に保つことができると私は信じているからです(残念ながら、HTMLやSQLなどのスペルミスが必要です)。同様に、キャメルケースでは、HTMLParserMethodやHTMLparserMethodの代わりにhtmlParserMethodを使用します。
UPDATE :
それ以来、これらのルールを拡張してプライベート変数を含めることに使用されています。–_ private_variable_names_are_prefixed_with_an_underscore-_PRIVATE_CONSTANT_VARIABLES_ARE_PREFIXED_WITH_AN_UNDERSCORE
Javaでは、これは、プライベートフィールドが定義上ローカル変数とは異なる名前空間にあることを意味します。つまり、this.
」というプレフィックスが付いた他の形式もありますが、これらの形式でも変数名にキャメルケースを使用しています。これにより、内部でのみアクセスする必要があるフィールドを区別することもできます。クラスごとに(そして、クラス外で発生した場合は super クリアにするobject._field_x
目立ちます。
回答
それが私にかかっているのなら、私は強制したり、ほのめかしたりしません。プログラマーとして、シンボルIfItIsInCamelCaseまたはin_underscore_space、さらにはin_SomeOtherStyleを読み取って、それが何を意味するのかを理解できるため、特定のスタイルを使用します。シンボルの解析にわずかな時間を費やす必要があることは、大きなスキームでは大きなオーバーヘッドではありません。
さて、私が推測する規則の主な議論は、関数/変数名の形式が何であるかを前もって知っていて、それを調べる必要がないということです-それはLoadXMLFile、loadXMLFileです、LoadXmlFi le、load_xml_file?さて、「インテリセンススタイルのオートコンプリートをサポートするIDEを入手してください!」と言って、その議論に対抗します。 (ただし、常に可能とは限りません)。
しかし、結局のところ、コンパイラ/インタプリタは実際には気にしないので、どのスタイルを使用するかは実際には問題ではありません。重要なのは、名前が役立つことです。
NumberOfPrisonersReleasedByAccident manufacturer_name distance_EarthToMoon
3つの異なるスタイルですが、それぞれが何をするかを正確に知っています。
コメント
- 違いますが、ソースの外観は重要です。 "実用的なプログラマー" 'の割れ窓理論を参照してください。命名規則を変えると、外観が悪くなります。 pragprog.com/the-pragmatic-programmer/extracts/software-entropy
- @Gauthier:'壊れたウィンドウ'のアイデア、'記号の大文字化が壊れたウィンドウ'。偶然にレイアウトされたコードは確かにそうです、そして私の現在のプロジェクトには確かに私ができる限り片付けようとするものがたくさんあります。
- 同意します。私は3つすべてを等しくよく読むことができます。 'は関係ありません。私はファイルが使用しているもの、言語が提案するもの(python)、そしてプロジェクトが最も役立つと思うものを使用します。 (以前はgwbasicでプログラミングしていましたが、すべて大文字でした。古き良き時代です!)
回答
ばかげているように見えるかもしれませんが、アンダースコアが細く、複数行のテキストに隠れてしまい、見逃してしまうため、アンダースコアは好きではありません。また、一部の(多くの)テキストエディタや開発環境では、ダブルクリックするとコピーまたはドラッグアンドドロップするために強調表示するトークン名。システムはトークン全体を強調表示せず、隣接するアンダースコアの間のトークンの一部のみを強調表示します。これは私を狂わせます。
回答
Eclipse(Java、PHP、JavaScriptの場合)で開発のほとんどを行うというばかげた理由から、camelCaseを好む傾向があります。 Ctrl + ← または Ctrl + → 単語を介して、実際にはcamelCaseの境界で停止します。
つまり、myIntVariable
は、 Ct rl + ← → ”
私はそれを知っています」奇妙な癖ですが、キャメルケース名の中間の単語を編集できることを望んでいます。
Motor1_Start()
、Motor2_Start()
、Motor1_Stop()
、Motor2_Stop()
関係は下線なしではわかりにくいかもしれません。