Конвенція про іменування проектів з відкритим кодом iOS / OSX


12

Не завжди, але більшу частину часу ви знайдете проекти з відкритим кодом iOS або Mac OS X з іменами, починаючи з початкових літер імені та прізвища автора. Якби автор проекту був Ніком Лебланком, проект буде читати як NLMyProject.

Приклади:

Звідки це походить? Чи одна людина написала це спочатку таким чином, а потім усі інші йшли?

Я нічого не міг знайти про це, навіть у Apple Guidelines . Це ідіома десь написана?


1
Приємне запитання та круті приклади з відкритим кодом! ;-)
Лев Натан

Відповіді:


16

Об'єктив C, як і C, не має просторів імен. Це означає, що якщо хтось уже визначив функцію fooчи клас Bar, він повинен бути унікальним у всьому світі, і ви не можете його визначити. Це може призвести до великих головних болів, коли у вас є ваш код, а потім додайте іншу бібліотеку, і раптом щось порушиться в чужих місцях.

Для цього існує вказівка ​​Apple, представлена ​​в програмі «Завдання C: Конвенції» бібліотеки розробників iOS:

Деякі імена повинні бути унікальними у вашому додатку

Кожен раз, коли ви створюєте новий тип, символ чи ідентифікатор, слід спочатку врахувати область, у якій ім'я повинно бути унікальним. Іноді ця сфера може бути цілою програмою, включаючи її пов'язані рамки; іноді сфера дії обмежується лише класом, що додається, або навіть просто кодом.

Назви класів мають бути унікальними протягом усього додатка

Класи Objective-C повинні бути названі однозначно не тільки в коді, який ви пишете в проекті, але і в будь-яких рамках або пакетах, які ви можете включати. Як приклад, вам слід уникати використання загальних імен класів, таких як ViewController або TextParser, оскільки можливо, що рамки, які ви включаєте у свою програму, можуть не дотримуватися конвенцій та створювати класи з однаковими іменами.

Щоб зберегти унікальні імена класів, умовою є використання префіксів для всіх класів. Ви помітили, що назви класів Cocoa та Cocoa Touch, як правило, починаються з NS або UI. Двохбуквенні префікси, подібні цим, зарезервовані Apple для використання в рамках класів фреймворку. Коли ви дізнаєтесь більше про Cocoa та Cocoa Touch, ви зіткнетеся з низкою інших префіксів, які стосуються конкретних рамок:

...

Ваші власні класи повинні використовувати три буквені префікси. Вони можуть стосуватися комбінації назви вашої компанії та назви вашої програми або навіть певного компонента у вашій програмі. Наприклад, якщо ваша компанія називалася Whispering Oak, і ви розробляли гру під назвою Zebra Surprise, ви можете вибрати WZS або WOZ як свій префікс класу.

Отже, вони мають бібліотеки, які ви згадуєте про певне порушення цієї конвенції, але в основі проблеми відсутності простору імен в межах Цілі C.

Подальше читання
простору імен NSHipster
Який найкращий спосіб вирішити зіткнення в просторі імен Objective-C?
Як користуються просторами імен в коді iOS aim-c?


Звучить, що Objective-C дійсно потребує просторів імен ...
Кріс Сірефіс

1
@ChrisCirefice було б дуже приємно, але зрозуміти, що мета C - це тонкий шар на вершині C. Спроба ввести простору імен там, ймовірно, складніше, ніж виглядає, не порушуючи речі. Копання Чому у Objective-C немає просторів імен? Я знайшов розробників Clang - додавання просторів імен до Objective-C . Пам'ятайте, @використовується, тому що він не використовується в C ... спроба додати іншого оператора, який не порушує інші речі, є складним завданням.

1
@ChrisCirefice Імена просторів нічого не вирішують. Сутички з префіксами просто стають сутичками в просторі імен.
Майлз Руут

@MichaelT Мета C протягом певного часу не була тонким шаром на вершині C (Завдання C 2.0). Тепер Apple перенесла фокус на Swift, який включає в себе більш сучасні функції, такі як простори імен, але в даний час бракує інших особливостей Objective C.
Лео Натан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.