Clean Architecture in iOS
Minimum price
Suggested price

Clean Architecture in iOS

Principles and good design practices applied in iOS.

About the Book

It isn't easy to control what cannot be measured. 

That's. When Clean Architecture is applied to solutions, one consequence is to provide mechanisms to measure and test every critical software piece in the solution. 

The challenge is not only about starting a project with an architecture that allows its progressive evolution but also keeping it on an upward curve in terms of its quality attributes. 

To the extent that the Solution Architecture allows flexible measurements, testing, and scaling, the indications will be better for the project and, therefore, for the company. 

This work is based on the principles of Clean Architecture, the style of architecture that Robert C. Martin introduced us years ago. It is a text focused on solutions designed for iOS; however, it could affirm that 90% of the concepts also apply to Android solutions. 

The first thing that is developed in the book is the design principles that are the basis for using the following themes. Concepts such as dependency inversion, inversion of control and dependency injection are exposed for your clear understanding, with the additional purpose of knowing how to differentiate between one concept or another.

Then the relationship between the components is reviewed through levels and layers. This analysis is necessary to locate each element with its respective responsibilities in the right place. 

Once the parts are located, the need arises to communicate them with each other. This is where the reader is oriented to the ports and adapters chapter to determine the appropriate integration mechanisms between components of different layers and levels. 

Continuing with the development of the topic, we go down a little more in detail to analyze the alternatives for organizing the components in directories or folders and what might be the limits established between them. 

In this way, two essential chapters are reached in the design of a mobile solution, the Design patterns, and Considerations in Architecture

Design patterns expose those known and recommended patterns to apply to mobile solutions. Innovative pattern variables are also presented that could be useful for startups and companies specialized in this type of service. 

In the chapter that develops considerations in architecture, a set of arguments is presented that could answer questions that we as a product development team usually ask ourselves daily while implementing it under the Clean Architecture framework. That is a chapter that I hope is controversial due to the particular existence of opinions in another sense, that is precisely one of the objectives that I seek to achieve with this work. To lead the reader to debate and carry out their analyses, they apply the most appropriate solution in their solutions. 

Subsequently, to complement the two previous chapters, the orchestration strategies between local data (in memory or cache) and remote data (external APIs and other sources) are developed. A plan that sooner rather than later should be considered in most solutions.

And finally, the topic developed in the chapter on implementation details corresponds to techniques used properly in iOS that help to apply Clean Architecture in a source code environment. 

With this content and a couple of annexes, the present work is closed, which I hope will be of liking and utility for the reader.

About the Author

Yair Carreno
Yair Carreno

Yair is a Software Architect specialized in mobile solutions. For more than a decade he has been designing and developing products for different companies in different areas such as finance, entertainment, social.

He likes to teach and share his knowledge in one of his most passionate fields, software design, and development.

Bundles that include this book

Bought separately
Bundle Price
Bought separately
Bundle Price

Table of Contents

  • Preface
    • About the book
    • Who this book is for
    • Reader feedback and customer support
  • Design Principles
    • Dependency Inversion
    • Inversion of control
    • Dependency injection
  • Levels in an application
    • Relationship between layers and levels
    • How to determine the level of a layer?
    • Why is it important to distinguish the level of one layer from another layer?
    • How to ensure that the dependency rule is applied and maintained correctly?
  • Ports and Adapters
    • Input Port Design
    • Output Port Design
    • Good practices in port design
    • Benefits gained from using ports
  • Organization of the project
    • Boundaries
    • Monolithic or modular design
    • Folders and source organization
    • Software development processes
  • Design patterns
    • Dependency Injection
    • Model View ViewModel
    • Coordinator
    • Repository
    • Plugin
    • Data Mapper
    • Reactive patterns
  • Architecture considerations
    • The need for mediator elements
    • The location of business rules in the Domain
    • Differentiate between application logic and domain logic
    • Differentiate between model entity and persistence entity
    • When to decide between Entities or Value Objects
    • Input and output structures in Use Cases
    • On using Entities as input and output object
    • Mapping between borders
    • When it is necessary to assign interfaces
    • Organize the Domain layer in a separate context?
    • Organize the Data layer in a separate context?
    • Modules to share resources between features
    • Pragmatism in Architecture?
  • Strategies for managing local and remote information
    • Single source of truth
    • Offline-first
    • Online-first
    • Backup between sources
  • Exploring implementation details
    • Module configuration
    • Configuration of multiple environments
    • Strategies to apply mocking
    • Linters and tools to validate compliance with the architecture
    • Templates to pattern implementation.
  • Appendix A
    • Association, aggregation and composition relationships between elements
    • Design with relationships in mind
  • Notes

The Leanpub 60-day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

See full terms

80% Royalties. Earn $16 on a $20 book.

We pay 80% royalties. That's not a typo: you earn $16 on a $20 sale. If we sell 5000 non-refunded copies of your book or course for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earnedover $12 millionwriting, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub