Swift ha madurado significativamente en los años transcurridos desde que se escribió esta respuesta. Las pautas de diseño ahora establecen :
Los protocolos que describen qué es algo deben leerse como sustantivos (p Collection. Ej .).
Protocolos que describen una capacidad deben nombran usando los sufijos able, ibleo ing(por ejemplo Equatable, ProgressReporting).
¡Gracias a David James por ver esto!
Respuesta original
Usar alguna forma de notación húngara puede ser una buena idea: representar conceptos importantes que no pueden codificarse dentro del sistema de tipos. Sin embargo, el hecho de que algún identificador se refiera a un protocolo es parte del sistema de tipos en Swift (y C #) y, como tal, cualquier prefijo o sufijo solo agrega ruido. Los prefijos o sufijos claros son una mejor idea para conceptos como excepciones o eventos.
En ausencia de una guía de estilo oficial para Swift, tenemos que elaborar la nuestra o pedir prestado las guías o códigos existentes. Por ejemplo, la guía de estilo Objective-C para Cocoa contiene esta sección:
Los protocolos deben nombrarse de acuerdo con cómo agrupan los comportamientos:
La mayoría de los protocolos agrupan métodos relacionados que no están asociados con ninguna clase en particular. Este tipo de protocolo debe nombrarse para que el protocolo no se confunda con una clase. Una convención común es usar una forma de gerundio ("... ing"):
NSLocking- Bueno.
NSLock- Pobre (parece un nombre para una clase).
Algunos protocolos agrupan varios métodos no relacionados (en lugar de crear varios protocolos pequeños separados). Estos protocolos tienden a estar asociados con una clase que es la expresión principal del protocolo. En estos casos, la convención es dar al protocolo el mismo nombre que la clase.
Un ejemplo de este tipo de protocolo es el NSObjectprotocolo. Este protocolo agrupa métodos que puede usar para consultar cualquier objeto sobre su posición en la jerarquía de clases, para invocar métodos específicos e incrementar o disminuir su recuento de referencias. Como la NSObjectclase proporciona la expresión principal de estos métodos, el protocolo lleva el nombre de la clase.
Sin embargo, el consejo del segundo punto ya no es aplicable:
Debido a que el espacio de nombres de clases y protocolos está unificado en Swift, el NSObjectprotocolo en Objective-C se reasigna NSObjectProtocolen Swift. ( fuente )
Aquí, el …Protocolsufijo se usó para desambiguar el protocolo de la clase.
La biblioteca estándar Swift contiene los protocolos Equatable, Comparabley Printable. Estos no usan la forma "... ing" de Cocoa, sino el sufijo "... capaz" para declarar que cualquier instancia de este tipo debe admitir una determinada operación.
Conclusión
En algunos casos donde un protocolo solo tiene una implementación relevante, un sufijo "... Protocolo" puede tener sentido para que la clase y el protocolo puedan tener el mismo nombre. Sin embargo, esto debería limitarse solo a tales casos.
De lo contrario, el nombre debe ser algún nombre que refleje qué operaciones contiene este protocolo. Usar un verbo "... ing" o "... capaz" puede ser un buen punto de partida, y es poco probable que tales nombres entren en conflicto con los nombres de clase.
El nombre noEquatableProtocol es recomendable . El nombre Equatableo Equatingsería mucho mejor, y no espero que ninguna clase tenga el nombre Equatable. En este caso, el Protocolsufijo es ruido.