Swift Protocol Conformance best practice

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Swift Protocol Conformance best practice

    Hallo Entwickler,

    Ich bin gerade dabei, den Code meiner App einem Refactoring zu unterziehen und bin mir nicht sicher, wie ich die Protocol Conformance handhaben soll.

    Bisher habe ich es so gemacht:

    Quellcode

    1. class MyViewController: UIViewController, UISearchResultsUpdating {
    2. ...
    3. }


    Mithilfe von Swift Extensions könnte man es aber auch so schreiben:

    Quellcode

    1. class MyViewController: UIViewController {
    2. ...
    3. }
    4. extension MyViewController: UISearchResultsUpdating {
    5. ...
    6. }
    Dadurch bekommt der Code mehr Struktur, der Entwickler muss aber beim Kennzeichnen von private und fileprivate Variablen und Methoden aufpassen.

    Dieser Weg erfordert aber weitere Überlegungen. Ich möchte nun in einer Funktion von UISearchResultsUpdating meine Funktion search aufrufen, die nur dort gebraucht wird. Sollte diese Funktion in der Hauptklasse als fileprivate definiert werden und aus der extension aufgerufen werden oder sollte search als private in der Extension definiert werden und alle Variablen aus der Hauptklasse, auf die sie zugreift, fileprivate?

    Wie sind eure Konventionen diesbezüglich?
  • Ich habe etwas (begründete) Hoffnung, dass die Aufsplittung wieder rückgängig gemacht wird - private hat für mich keinen Mehrwert.
    Das mit den Extensions ist zwar weit verbreitet, aber persönlich neige ich dazu, damit aufzuhören:
    Einerseits prüft Swift nicht, ob die Methoden in der richtigen Extension liegen, und andererseits kann Xcode mit mark-Kommentaren mehr anfangen.