What's your take on Clean Swift


What’s your take on Clean Swift? https://clean-swift.com/


Clean swift I think is a really great replacement for MVVM, MVC, and even VIPER.

MVC depending on the use case, this can be very usable, but when the classes exceed a few hundred lines, then the problem now presents itself. Coupled code is bad.

MVVM as an architecture is okay but the problem with MVVM is that all your logic will fall on your View Model and that’s not ideal.

VIPER is the pattern I personally use, one of the good things about VIPER is its ease on testability because it follows the SOLID principles really well, the only downside to this is that the Presenter could potentially cause memory leaks because it has references all over the place.

VIP also known as Clean Swift is a very good architecture, all the more iIf you’re into test driven development. I’m actually considering on migrating my current VIPER/Coordinator based architecture to this.

To help you understand better I think reading this link would help you out, on how clean swift works.


The good:
Code are well separated and into their own bins. Since it is protocol based then it is easier to test.

The not so good:
Used it on several internal projects. When I introduced it to our juniors they had a hard time with it as it requires a lot of pre-requisite knowledge on many concepts. Reading or finding something in the code is not intuitive. I discontinued using it as it is not great for a team with different skill levels.

VIPER, Clean Swift are for experienced developers. Even myself can get lost at times when the code gets larger.

I am introducing a simple decoupled architecture to the team using traditional terms and junior friendly. It is testable since it is strongly protocol based and using a dependency container.


@nmariano has a very good point on the cons of VIPER and Clean Swift, also there are too few resources/tutorials out there to help junior devs understand these high level patterns.

By the way if you’re actually just considering on adopting a pattern I think the Coordinator pattern by Soroush Khanlou is a good start.