iOS / OSXオープンソースプロジェクトの命名規則


12

常にではありませんが、ほとんどの場合、作成者の姓と名の頭文字で始まる名前のiOSまたはMac OS Xオープンソースプロジェクトがあります。プロジェクトがNick Leblancによって作成される場合、プロジェクトはとして読み取られNLMyProjectます。

例:

それはどこから来たのですか?ある人が最初にこのように書いて、それから他のみんながそれに続きましたか?

Appleガイドラインでさえ、それについて何も見つけることができませんでした。そのイディオムはどこにでも書かれていますか?


1
素敵な質問と、クールなオープンソースの例!;-)
レオナタン

回答:


16

Cと同様に、Objective Cには名前空間がありません。誰かがすでに機能定義されている場合は、この手段があることfooや、クラスをBar、それがグローバルに一意である必要があり、あなたはそれを定義することはできません。これにより、コードを作成してから別のライブラリを追加すると、突然頭がおかしくなり、多くの頭痛の種になります。

これについて、iOS開発者ライブラリの「Objective Cでのプログラミング:規則」セクションにAppleが提示したガイドラインがあります。

一部の名前はアプリ全体で一意でなければなりません

新しいタイプ、シンボル、または識別子を作成するたびに、名前が一意でなければならないスコープを最初に考慮する必要があります。このスコープは、リンクされたフレームワークを含むアプリケーション全体になる場合があります。場合によっては、スコープは囲みクラスまたはコードブロックのみに制限されます。

クラス名はアプリ全体で一意でなければなりません

Objective-Cクラスには、プロジェクトで記述しているコード内だけでなく、含めるフレームワークやバンドル全体で一意の名前を付ける必要があります。例として、ViewControllerやTextParserなどの汎用クラス名の使用を避ける必要があります。アプリに含めるフレームワークが規則に従わず、同じ名前のクラスを作成できない可能性があるためです。

クラス名を一意に保つために、規則はすべてのクラスでプレフィックスを使用することです。CocoaおよびCocoa Touchのクラス名は、通常NSまたはUIで始まることがわかります。これらのような2文字のプレフィックスは、フレームワーククラスで使用するためにAppleによって予約されています。CocoaとCocoa Touchについてさらに学習すると、特定のフレームワークに関連する他のさまざまな接頭辞に遭遇します。

...

独自のクラスでは、3文字のプレフィックスを使用する必要があります。これらは、会社名とアプリ名の組み合わせ、またはアプリ内の特定のコンポーネントに関連する場合があります。たとえば、あなたの会社がWhispering Oakと呼ばれ、Zebra Surpriseというゲームを開発している場合、クラスのプレフィックスとしてWZSまたはWOZを選択できます。

したがって、彼らはあなたが言及しているライブラリはこの規則を破るが、Objective C内の名前空間の欠如の問題の中心になります。

さらに読書
NSHipsterによって名前空間
に何がObjective-Cの名前空間の衝突を解決するための最良の方法ですか?
iOS Objective-Cコードで名前空間を使用する方法


Objective-Cは本当に名前空間を必要としているように
聞こえ

1
@ChrisCireficeそれは本当に素晴らしいことですが、実現するべきことは、Objective CがCの上にある薄い層であることです。そこに名前空間を導入しようとすると、物事を壊さずに見た目よりも難しいでしょう。掘り下げるObjective-Cに名前空間がないのなぜですか?Clang Developers-Objective-Cへの名前空間の追加を見つけました。@Cで使用されていないため、...を使用することを忘れないでください。他のものを壊さない別の演算子を追加しようとするのは困難です。

1
@ChrisCirefice名前空間は何も解決しません。プレフィックスの衝突は名前空間の衝突になります。
マイルズラウト14年

@MichaelT Objective Cはしばらくの間、Cの上に薄いレイヤーではありませんでした(Objective C 2.0)。今、Appleは、このような名前空間など、より現代的な機能を、含まれていますが、現在のObjective Cの他の機能を欠いスウィフト、に焦点をシフトしている
レオナタン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.