Nomenclatura de protocolos en Objective C


Estoy luchando con los protocolos de nomenclatura en Objective-C. Por ejemplo:

Tengo un protocolo llamado Comando. Tengo una clase abstracta que implementa Comando que es una clase base para mis comandos concretos.

Creo que es posible llamar tanto al protocolo como a la clase base 'Command', pero esto es confuso y causará conflictos de importación si necesito hacer referencia al protocolo en una implementación. También entiendo que en Objective C, usar un prefijo para denotar un protocolo es malo forma. Algunos ejemplos usan' ing ' añadido al final, pero en este caso eso no tiene sentido. Llamar a la clase abstracta 'CommandBase' también parece incorrecto.

Entonces, ¿cómo debo nombrarlos?

Author: Undistraction, 2011-09-20

3 answers

Sugeriría que en su caso no es necesariamente malo nombrar su protocolo y la clase base lo mismo, ya que su clase es la expresión principal del protocolo (como con NSObject).

De las Pautas de codificación de Apple para Cocoa: Conceptos Básicos de Nomenclatura de código :

Algunos protocolos agrupan un número de métodos no relacionados (en lugar de crear varios protocolos pequeños separados). Estos protocolos tienden a ser asociado con una clase que es el principal expresión de la protocolo. En estos casos, la convención debe dar al protocolo el el mismo nombre que la clase. Un ejemplo de este tipo de protocolo es el Protocolo NSObject. Este protocolo agrupa los métodos que puede utilizar para consultar cualquier objeto sobre su posición en la jerarquía de clases, para hacerlo invocar métodos específicos, y aumentar o disminuir su referencia contar. Porque la clase NSObject proporciona la expresión primaria de estos métodos, el protocolo lleva el nombre de la clase.

 24
Author: Stuart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-20 10:46:45

Todo cubierto en las Pautas de Codificación de Apple para Cocoa en la sección Conceptos básicos de Nomenclatura de código.

El autor afirma:

Los protocolos deben nombrarse de acuerdo con la forma en que agrupan los comportamientos:

La mayoría de los protocolos agrupan métodos relacionados que no están asociados con ninguno clase en particular. Este tipo de protocolo debe ser nombrado de modo que el el protocolo no se confundirá con una clase. Una convención común es utilizar a gerund ("...ing") form:

NSLocking - Bueno.

NSLock - Poor (parece un nombre para una clase).

Algunos protocolos agrupan un número de métodos no relacionados (en lugar de crear varios protocolos pequeños separados). Estos protocolos tienden a ser asociado con una clase que es la expresión principal de la protocolo. En estos casos, la convención debe dar al protocolo el el mismo nombre que la clase.

Un ejemplo de este tipo de protocolo es el protocolo NSObject. Este grupos de protocolo métodos que puede utilizar para consultar cualquier objeto sobre su posición en la jerarquía de clases, para hacer que invoque métodos específicos, y aumentar o disminuir su número de referencia. Porque el La clase NSObject proporciona la expresión primaria de estos métodos, la protocol lleva el nombre de la clase.

 17
Author: Max MacLeod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-31 11:58:04

Si verá el protocolo predefinido de uitableview, NSURLConnection, entonces u obtendrá el nombre de protocal al igual que UItabaleviewDelegate y NSURLConnectionDelegate. ........

Entonces usted puede undertand fácil qué delegado es pertenecer de qué clase

Así que u puede usar su classnameDelegate como nombre de protocolo ....gracias

 -3
Author: Virus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-15 15:06:24