Entiendo que es una buena práctica pasar self
a todas las llamadas a métodos delegados, como lo hace UIKit con UITableView, por ejemplo.
¿Cuál es tu recomendación para nombrarlos?
Ejemplos:
func didSelectName(forNamePicker: NamePickerViewController, name: String)
o tal vez
func didSelectNameForNamePicker(namePicker: NamePickerViewController, name: String)
o tal vez simplemente
func didSelectName(namePicker: NamePickerViewController, name: String)
esto tiene mas sentido para mi
func didSelectName(name: String, forNamePicker namePicker: NamePickerViewController)
También creo que depende de lo que esté haciendo este método y en qué contexto se defina.
Bueno, este es su método de delegado típico, pertenece a NamePickerViewControllerDelegate y notifica al delegado que el usuario eligió un nombre.
Me gusta tu versión, empezaré a usarla.
Creo que esta sería una buena adición a la guía de estilo (no la he visto en la versión actual, pero noté una gran cantidad de relaciones públicas pendiente).
Aquí está mi opinión:
(1) Esta guía frecuentemente difiere de la guía de Apple. Para ver ejemplos, consulte las secciones Naming
y Protocol Naming
, las cuales se refieren a Following Apple's API Design Guidelines
.
(2) Apple frecuentemente pone el nombre del objeto que delega (es decir self
) _primero_. UITableViewDataSource
y UITableViewDelegate
muestran _muchos_ ejemplos de esto:
optional public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
optional public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
(3) Por lo tanto, si especificamos algo (estoy indeciso sobre si deberíamos o no), creo que deberíamos seguir dichos ejemplos. Por lo tanto, iría con esta firma:
func namePickerView(namePickerView: NamePickerView, didSelectName name: String)
Derecha. Creo que esto se verá así para Swift 3, ya que el primer parámetro ya no se manejará de manera especial como en Swift 2.2.
func namePickerView(_ namePickerView: NamePickerView, didSelectName name: String)
Hacer lo mismo que la fuente de vista de tabla es una buena estrategia de nomenclatura.
Entendido. Gracias por la aclaración. @JRG-Developer Por lo que puedo decir, las Pautas de diseño de API de Swift a las que se refieren no hablan explícitamente sobre la denominación del método de delegado. Creo que básicamente están diciendo "sigue el ejemplo de Apple", lo que creo que no es un mal enfoque. La consistencia tiene sus beneficios.
Gracias a todos por su aporte. Creo que podemos cerrar este problema como "seguir el ejemplo de Apple".
Creo que de esto debería surgir una directriz para la designación de delegados, incluso si se trata de "seguir el ejemplo de Apple".
https://github.com/raywenderlich/swift-style-guide/pull/181 aborda este problema
Gracias por tu ayuda en esto @fabienwarniez ... si quieres agregarte a la lista de colaboradores no dudes en enviar un PR.
Comentario más útil
Aquí está mi opinión:
(1) Esta guía frecuentemente difiere de la guía de Apple. Para ver ejemplos, consulte las secciones
Naming
yProtocol Naming
, las cuales se refieren aFollowing Apple's API Design Guidelines
.(2) Apple frecuentemente pone el nombre del objeto que delega (es decir
self
) _primero_.UITableViewDataSource
yUITableViewDelegate
muestran _muchos_ ejemplos de esto:(3) Por lo tanto, si especificamos algo (estoy indeciso sobre si deberíamos o no), creo que deberíamos seguir dichos ejemplos. Por lo tanto, iría con esta firma: