Swift: Adopt Protocols without cluttering the class declaration
After transitioning to Swift and Protocol Orietented Programming you might find yourself in a situation where your ViewControllers adopt a lot of protocols
class MYViewController: UIViewController, AppearanceProvider, ZoomingBehaviour, ThirdProtocol, UINavigationDelegate {
}
The more protocols you add the uglier this chain of comma separated protocols gets. The cheap solution (comes from a good friend of ours) is to create an extension for each protocol you want to adopt(implement)and to keep the code related to that protocol in the same extension. This provides a nice Interface Segregation and separation of responsibilities.
class MYViewController: UIViewController {
}
extension MYViewController: AppearanceProvider {
// appearance code
}
extension MYViewController: ZoomingBehaviour {
// zooming code
}
extension MYViewController: UINavigationDelegate {
// navigation code
}