Наименование протокола в Задаче C - PullRequest
27 голосов
/ 20 сентября 2011

Я борюсь с протоколами именования в Objective-C.Например:

У меня есть протокол под названием Command.У меня есть абстрактный класс, который реализует Command, который является базовым классом для моих конкретных команд.

Я считаю, что можно назвать и протокол, и базовый класс «Command», но это сбивает с толку и вызовет конфликты импортаесли мне нужно ссылаться на протокол в реализации.Я также понимаю, что в Objective C использование префикса для обозначения протокола является плохим тоном.В некоторых примерах в конце используется «ing», но в данном случае это не имеет смысла.Вызов абстрактного класса 'CommandBase' также кажется неправильным.

Так как мне их назвать?

Ответы [ 3 ]

24 голосов
/ 20 сентября 2011

Я бы предположил, что в вашем случае не обязательно плохо называть ваш протокол и базовый класс одним и тем же, так как ваш класс является основным выражением протокола (например, с NSObject).

Из Apple Руководство по кодированию для какао: основы именования кодов :

Некоторые протоколы группируют несколько несвязанных методов (вместо создания несколько отдельных небольших протоколов). Эти протоколы имеют тенденцию быть связано с классом, который является основным выражением протокол. В этих случаях соглашение заключается в предоставлении протоколу то же имя, что и класс. Примером такого протокола является Протокол NSObject. Этот протокол группирует методы, которые вы можете использовать для запросить любой объект о его положении в иерархии классов, чтобы сделать его вызывать конкретные методы и увеличивать или уменьшать его ссылку сосчитать. Поскольку класс NSObject предоставляет основное выражение эти методы, протокол назван в честь класса.

17 голосов
/ 20 сентября 2011

Все описано в Руководстве Apple по кодированию для какао в разделе Основы именования кодов.

Автор утверждает:

Протоколы должны быть названы в соответствии с тем, как они группируют поведение:

Большинство протоколов группируют связанные методы, которые не связаны ни с какими класс в частности. Этот тип протокола должен быть назван так, чтобы Протокол не следует путать с классом. Общее соглашение заключается в использовании форма герунда («... ing»):

NSLocking - Хорошо.

NSLock - плохо (похоже на название класса).

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

Примером протокола такого типа является протокол NSObject. это Методы групп протоколов, которые вы можете использовать для запроса любого объекта о его положение в иерархии классов, чтобы заставить его вызывать конкретные методы, и увеличивать или уменьшать его счетчик ссылок. Поскольку Класс NSObject обеспечивает основное выражение этих методов, Протокол назван в честь класса.

0 голосов
/ 15 марта 2014

если вы увидите предопределенный протокол для uitableview, NSUrlconnection, тогда вы получите имя протокола, как UItabaleviewDelegate и NSUrlconnectionDelegate.........

Затем вы можете легко определить, какой делегат принадлежит к какому классу

Так что вы можете использовать ваш classnameDelegate в качестве протокольного имени .... спасибо

...