This are the slides for the talk that I made at Codemotion 2015.
Swift had provided developers with new features of the most modern languages combined with a simple and elegant syntax. In this presentation I explore what an advanced architecture is and its benefits, how design patterns help us in an advanced architecture, and how to implement those patterns in Swift, taking advantage of Swift 2.x new features.
14. #Swift4AA
Is Swift a Functional
Language?
Purity or pragmatism?
Swift allows to express solutions
declaratively
Many standard functions to help and even
more from some libraries
28. Generic Awesome Power
func countGreater<T where T:Comparable>(array:
[T], value: T) -> Int {
var count = 0
for elem in array where elem > value {
count++
}
return count
}
29. #Swift4AA
If you scratch my back…
It is also true that some patterns make
using Swift easier
Prefer non-optionals: Null Object (and
combine it with errors)
30. class Text {
func displayContents() {
print("Hola")
}
}
class NullText: Text {
override func
displayContents() {
}
}
func fetchText() -> Text {
return NullText()
}
let text = fetchText()
text.displayContents()
Null Object
class Text {
func displayContents() {
print("Hola")
}
}
func fetchText() -> Text? {
return nil
}
if let text = fetchText() {
text.displayContents()
}
31. #Swift4AA
Still Pending
Introspection
• Very limited
• Useful for: Dependency Injection, KVC/KVO
Dynamic Dispatching
Community Supported features:
• Promises
• Reactive Extensions
33. #Swift4AA
Conclusions
Swift is a very expressive language
• Intent
It is mature enough to be used with
advanced architectures
Some additional features would be more
than welcome