Действительно ли коллизии пространства имен являются проблемой в Objective-C? - PullRequest
10 голосов
/ 20 июня 2009

Objective-C не имеет пространств имен, и многие (например, Руководство по стилю какао CocoaDevCentral ) рекомендуют ставить имена классов перед инициалами, чтобы избежать конфликта пространства имен.

Цитирование по вышеуказанной ссылке:

Objective-C не имеет пространств имен, поэтому префикс ваших имен классов с инициалы. Это избегает "пространства имен столкновение ", которая представляет собой ситуацию, когда две части кода имеют одинаковое имя но делай разные вещи.

Это имеет смысл, я полагаю. Но, честно говоря, в контексте относительно небольшого приложения (скажем, игры для iPhone) это действительно проблема? Должен ли я действительно переименовать MyViewController в ZPViewController? Если нет, то в какой момент коллизии пространства имен действительно становятся проблемой?

Ответы [ 4 ]

20 голосов
/ 20 июня 2009

Если вы пишете приложение, которое использует некоторый набор библиотек, то вы уже знаете, как выглядит ваше пространство имен, и вам просто нужно выбрать имена, которые не конфликтуют с существующими доступными функциями.

Однако, если вы пишете библиотеку для использования другими, то вам следует выбрать достаточно уникальный префикс, чтобы избежать коллизий имен с другими библиотеками. Только с двумя символами могут быть конфликты имен, но частота будет уменьшена.

2 голосов
/ 20 июня 2009

Небольшие приложения не должны использовать все хорошие имена, поэтому у них не будет проблем с пространствами имен.

Но это хорошая идея, чтобы привыкнуть к стилю, в котором обычно пишут языки. Это облегчает чтение кода других людей, а других - вашего.

E. например, используйте переменные camelCase в Java, но переменные CamelCase в C #, имена-дефисы в C и т. д.

Это поможет вам учиться в долгосрочной перспективе.

0 голосов
/ 27 декабря 2013

Я работал с репозиториями, где классы не имели префикса. (Или только некоторые классы имеют префикс.)

Одна вещь, которая мне показалась болезненной, - это иногда трудно сказать, был ли код написан кем-то внутри или вне компании. Использование согласованного префикса делает его очевидным для тех, кто читает код впервые.

Имейте в виду, что код будет прочитан намного больше, чем написан.

Кроме того, это может пригодиться при использовании таких инструментов, как grep и sed.

0 голосов
/ 21 ноября 2013

Я читал (но не проверял), что у Apple есть частные классы в их структурах, которые не включают никаких префиксов в именах. Поэтому, если имена классов вашего приложения не имеют префиксов, вы рискуете столкнуться с ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...