Nel nuovo Swift API design guidelines, il suffisso Type
comunemente utilizzato per i protocolli viene eliminato. Mentre questo è facile da fare per i protocolli che sono stand-alone (SequenceType
diventa Sequence
), non sono sicuro di come aggiornare le mie API in cui un protocollo fornisce la base per un'implementazione. Ecco alcuni esempi di quadri famosi:In che modo le coppie di protocollo/implementazione devono essere adattate alle linee guida di progettazione dell'API Swift?
- Il Result μframework fornisce
Result
, un successo concreto/fail enumerazione, eResultType
, un protocollo di base generico per un successo/tipo di fallire, a qualiResult
conforme. - ReactiveCocoa I tipi principali
Signal
eSignalProducer
, che sono supportati daSignalType
eSignalProducerType
.
In entrambi i casi, gran parte dell'attuazione è nelle estensioni dei protocolli, consentendo estensioni sfruttare appieno la potenza dei vincoli di tipo, e permettendo implementazioni di essere generico. Questo è diverso dal caso dei protocolli con tipi di cancellazione del tipo di stile AnySequence
: non si è veramente attesi per implementare questi protocolli da soli o unificare tipi disparati.
Ho aggiunto una taglia a questa domanda perché mi piacerebbe una risposta (definitiva). –