Merge pull request #1202 from Wevah/code-style-updates

Update Protocols and Delegates section
This commit is contained in:
Brent Simmons 2019-10-28 11:11:44 -07:00 committed by GitHub
commit 1e1da9a541
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 0 deletions

View File

@ -66,6 +66,10 @@ Consider this a hard rule: all Swift classes must be marked as `final`, and all
Protocols and delegates (which are also protocol-conforming) are preferred. Protocols and delegates (which are also protocol-conforming) are preferred.
Protocol conformance should be implemented in Swift extensions.
If a delegate protocol is defined in the same file as the delegator class or struct, the protocol interface should be specified before the delegator.
Default implementations in protocols are allowed but ever-so-slightly discouraged. Youll find several instances in the code, but this is done carefully — we dont want this to be just another form of inheritance, where you find that you have to bounce back-and-forth between files to figure out whats going on. Default implementations in protocols are allowed but ever-so-slightly discouraged. Youll find several instances in the code, but this is done carefully — we dont want this to be just another form of inheritance, where you find that you have to bounce back-and-forth between files to figure out whats going on.
There is one unfortunate case about protocols to note: in Swift you cant create a Set of some protocol-conforming objects, and we use sets frequently. In those situations another solution — such as a thin object with a delegate — might be better. There is one unfortunate case about protocols to note: in Swift you cant create a Set of some protocol-conforming objects, and we use sets frequently. In those situations another solution — such as a thin object with a delegate — might be better.