Ich verstehe, dass es sich bewährt hat, self
an alle Methodenaufrufe von Delegaten zu übergeben, wie dies beispielsweise UIKit mit UITableView tut.
Was ist Ihre Empfehlung für die Namensgebung?
Beispiele:
func didSelectName(forNamePicker: NamePickerViewController, name: String)
oder vielleicht
func didSelectNameForNamePicker(namePicker: NamePickerViewController, name: String)
oder vielleicht einfach
func didSelectName(namePicker: NamePickerViewController, name: String)
Das macht für mich mehr Sinn
func didSelectName(name: String, forNamePicker namePicker: NamePickerViewController)
Ich denke auch, dass es davon abhängt, was diese Methode tut und in welchem Kontext sie definiert ist.
Nun, dies ist Ihre typische Delegate-Methode, sie gehört zu NamePickerViewControllerDelegate und benachrichtigt den Delegaten, dass der Benutzer einen Namen ausgewählt hat.
Ich mag Ihre Version, ich werde anfangen, sie zu verwenden.
Ich denke, dies wäre eine nette Ergänzung zum Styleguide (ich habe es in der aktuellen Version nicht gesehen, aber bemerkt, dass eine massive PR ansteht).
Hier ist meine Meinung:
(1) Dieser Leitfaden lehnt sich häufig an die Anleitung von Apple an. Beispiele finden Sie in den Abschnitten Naming
und Protocol Naming
, die sich beide auf Following Apple's API Design Guidelines
beziehen.
(2) Apple setzt häufig den Namen des delegierenden (dh self
) Objekts _zuerst_. UITableViewDataSource
und UITableViewDelegate
zeigen _viele_ Beispiele dafür:
optional public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
optional public func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
(3) Wenn wir also irgendetwas spezifizieren (ich bin mir unschlüssig, ob wir das tun sollten oder nicht), denke ich, dass wir den genannten Beispielen folgen sollten. Dabei würde ich mit dieser Signatur gehen:
func namePickerView(namePickerView: NamePickerView, didSelectName name: String)
Rechts. Ich denke, das wird für Swift 3 so aussehen, da der erste Parameter nicht mehr speziell behandelt wird wie in Swift 2.2.
func namePickerView(_ namePickerView: NamePickerView, didSelectName name: String)
Es ist eine gute Benennungsstrategie, dasselbe zu tun wie die Quelle der Tabellenansicht.
Verstanden. Danke für die Klarstellung. @JRG-Developer Soweit ich das beurteilen kann, sprechen die Swift-API-Designrichtlinien, auf die sie sich beziehen, nicht explizit über die Benennung von Delegate-Methoden. Ich denke, sie sagen im Grunde "Folge Apples Führung", was meiner Meinung nach kein schlechter Ansatz ist. Konsistenz hat seine Vorteile.
Vielen Dank an alle für Ihren Beitrag. Ich denke, wir können dieses Thema als "Apple folgen" schließen.
Ich denke, daraus sollte eine Richtlinie für die Benennung von Delegierten hervorgehen, auch wenn sie nach dem Motto „Folge Apples Führung“ lautet.
https://github.com/raywenderlich/swift-style-guide/pull/181 befasst sich mit diesem Problem
Vielen Dank für Ihre Hilfe bei diesem @fabienwarniez ... wenn Sie sich selbst zur Liste der Mitwirkenden hinzufügen möchten, können Sie gerne eine PR senden.
Hilfreichster Kommentar
Hier ist meine Meinung:
(1) Dieser Leitfaden lehnt sich häufig an die Anleitung von Apple an. Beispiele finden Sie in den Abschnitten
Naming
undProtocol Naming
, die sich beide aufFollowing Apple's API Design Guidelines
beziehen.(2) Apple setzt häufig den Namen des delegierenden (dh
self
) Objekts _zuerst_.UITableViewDataSource
undUITableViewDelegate
zeigen _viele_ Beispiele dafür:(3) Wenn wir also irgendetwas spezifizieren (ich bin mir unschlüssig, ob wir das tun sollten oder nicht), denke ich, dass wir den genannten Beispielen folgen sollten. Dabei würde ich mit dieser Signatur gehen: