2012-04-04 19 views
4

Cベースのコードライブラリ/ APIの一部であるファイルと関数の名前を付ける正しい方法は何ですか?Cライブラリコードの正しい命名規則

+1

さて、Cではメソッドがないので、心配することは1つ少なくなります。キッド。いくつかのオープンソースのCライブラリを見て、一番好きなものを選んでください。スタイルに関しては、コーディングスタイルに関してそのようなものがある場合は、_correct_よりも一貫性がある方がはるかに優れています。 – C2H5OH

+0

ファイル名はファイルシステムの規則に従う必要があります。 Cの関数名は、数字以外の文字で始まり、有効な識別子を構成する文字のみで構成されていなければなりません。 –

+1

基本的には、コーディング標準の推奨事項を求めています。それは本当に味の問題です。いずれにしても、これはhttp://stackoverflow.com/a/1262992/445525 –

答えて

6

でき(ただしすべき)を行うには、完全に不注意なこととは全く体系的な命名規則を使用していないです。これは「効果がありますが、あなたの顧客にとっては人生を不快にします。彼らは自分のプログラムでどの名前を使うことができるのかを簡単に知る方法がありません。 (私はerror()と呼ばれていた文書化されていない関数を定義したライブラリを見つけました。その名前は外部のドキュメント化された名前空間と一致しませんでした。 - それは今ではerr_error()ですが、それはそのライブラリで私自身の標準エラー報告機能を使用できないことを意味しました。 )

だから、あなたはそうであってはいけません。あなたが暴露する名前には注意が必要です。

あなたのパブリックヘッダは、文書化された1つ(またはごくわずか)の体系的なプレフィックスを使用する必要があります。通常、PFXなどのプレフィックスを選択して使用します。

  • 列挙定数開始PFX_
  • マクロ開始PFX_
  • 機能開始pfx_
  • グローバル変数(それらのどれも持っていません)は、pfx_を開始します。
  • タイプ名と構造体またはユニオンタグの開始pfx_
  • 再び自分のソースファイルの外に表示されているあなたのプライベート変数や関数は、体系的な接頭辞を持って
  • (おそらくpfx_、または多分pfxp_プライベート名はキャメルケースですが、で始まるように、最後のppfx[A-Z]プライベート、またはおそらくのためですpfx)。

厳密にファイルスコープ(外部リンケージなし)である変数または関数のみがこれらの規則に制約されませんが、その場合でも命名規則を使用することをお勧めします(関数が2つ後でファイルを追加する場合は、関数が以前のstaticだったコードで呼び出しを修正する必要はありません。

このようにして、PFX_またはpfx_から始まる名前は、あなたのライブラリによって予約されています。ユーザーは、同じプレフィックスの名前を使用することはできますが、ライブラリにアップグレードすると予約された名前が追加される可能性があるため、自己の責任においてこのプレフィックスを使用することはできません。彼らはあなたがそれらを文書化したので、そして(比較的)理解しやすいので、あなたの名前をはっきりと把握することができます。

C標準とPOSIX標準では、両方とも予約名の規則が定められていることに注意してください。しかし、予約されたPOSIXとCの名前の規則は、単なる接頭辞よりもはるかに複雑です。彼らはまた掃除している。たとえば、POSIXヘッダーが含まれている場合、タイプ名として使用するために、POSIXはすべて_tで終わる名前を予約します。

+0

のごまかしです。 objcの標準をかなり置き換えるなど、objcのASIWebPageRequestメソッドがcのasi_web_page_requestになる可能性があります。 – user773578

+0

@ user773578 ASIWebPageRequestはメソッドではなくクラスです。 –

+0

これらの一般的な行に沿って、はい。古典的には(C標準を参照)、関数名は小文字です。マクロは大文字である傾向があります。タイプは主に小文字などです。最も重要なことは、一連のルールを定義し、一貫して適用することです。オブジェクトファイル内の定義されたシンボルを識別するために 'nm'を使用し、それらがあなたのルールを満たしていることを確認する程度までです。人々はしばしばそれをしませんが、一貫したルールなしにライブラリを使用することはより困難です。 –