定数を「k」で始めることにはどのような意味がありますか?
-
20-08-2019 - |
質問
私は独学で Objective-C を勉強していますが、多くの本や例で、定数定義で 'k' とキャメルケーシングが使用されていることに気づきました。
#define kMyConstant 0
「k」にはどんな意味があるのでしょうか?これは Objective-C スタイルに特有のものですか、それとも C 全般に共通のものですか?(ベスト プラクティスとして常に考えてきた) K_MY_CONSTANT スタイルから逸脱するのはなぜですか?
ありがとう。
解決
以前にSOの質問で一度言及されましたが、 Cocoa の小文字の「k」.
これは、Objective-Cに固有ではない一般的なプログラミング表記です(すなわちハンガリー語表記)、「k」は「定数」を表します。
見てみると、 Googleキャッシュ Google の Objective-C ガイドラインを見ると、スタイルガイドにそれが含まれていたことがわかります。
定数名 (#defines、enum、const ローカル変数など) は小文字の k で始まり、大文字と小文字を混合して単語を区切る必要があります。kInvalidHandle、kWritePerm。
書くのは面倒ですが、コードを読みやすく保つためには絶対に不可欠です。次のルールでは、どこに何をコメントする必要があるかを説明します。でも覚えておいて:コメントは非常に重要ですが、最良のコードは自己文書化されたものです。型や変数に意味のある名前を付けることは、わかりにくい名前を使用してコメントで説明しようとするよりもはるかに優れています。
しかし、それはその後削除されました ライブバージョン 文書の。規約に反するので注意が必要です Cocoa の公式コーディング ガイドライン アップルから。
他のヒント
(K_MY_CONSTANT
のように)すべてのキャップは、通常、マクロを表す - は必ずしも一定ではありません。彼らはすべての名前空間を壊しので、マクロが目立つことが一般的に重要なのです。
「k
」大会は、非マクロC / C ++の定数と、おそらく他の言語のために(ただし、普遍的に)使用されています。私は「k
」は既に頻繁に使用されているため、「c
」が使用されている疑いがある - 。(CString
のように)クラス名を表すかの変数がカウンタであることをするか。
kMyConstantの事は戻って非常に古いMacのプログラミング日(「非常に古い」という80年代/ 90年代)になります。これは、Appleが使用され、多くのMacプログラマでも使用される標準的でした。これはMY_CONSTANT型定義の場所を取っています。
私はあなたが読んでいる著者が、次/ココアのプログラマーであることに先立って、古いMacのツールボックスは、MacのPascal / Cのプログラマだった想像します。 Macのライブラリは、「ツールボックス」と呼ばれて - これは時間をかけてカーボンになったAPIとライブラリのセットだった。
。私はまだ時々kMyConstantを使用します。私の古い学校のUnixプログラマの同僚のナットを駆動します。 : - )
私は、すべての言語をハード子音としてそれを発音ため、それが英語の発音の人々を思い出させるために先頭の「K」を使用することがあると思い、「定数」: - )
それは、検索対象として簡単ですので、予約語をkで始まりません。
あるいは、グラフィカル態様から、先頭の文字として、名前の残りの部分の前に非常に明確なフラグを提供します。 「c」をリードすることそれほど明白であり(例えば、ハンガリー語の表記のように)ロールまたはクラス(大文字小文字を区別しない言語の場合)を示すために使用されるかもしれません。
MY_CONSTANTはかなりよく、マクロベースの定数ためのものとして合意されています。マイケルバリが指摘したように(したがって、グローバルスコープで定義されているだけでなく、リテラルに、したがってデータタイプの限定された範囲から、計算され意味例えば、定数はマクロによって定義されていることを知ることが時には重要ですアウト)任意のローカル名前空間の定数を上書きします。