Clean Architecture in iOS
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 book
- Who this book is for
- Reader feedback and customer support
- 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
- Monolithic or modular design
- Folders and source organization
- Software development processes
- Dependency Injection
- Model View ViewModel
- Data Mapper
- Reactive patterns
- 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
- 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.
- Association, aggregation and composition relationships between elements
- Design with relationships in mind
The Leanpub 45-day 100% Happiness Guarantee
Within 45 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
See full terms
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), EPUB (for phones and tablets) and MOBI (for 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.
Algebra-Driven DesignSandy Maguire
A how-to field guide on building leak-free abstractions and algebraically designing real-world applications.
Production HaskellMatt Parsons
Are you excited about Haskell, but don't know where to begin? Are you thrilled by the technical advantages, but worried about the unknown pitfalls? This book has you covered.
Machine Learning EngineeringAndriy Burkov
"If you intend to use machine learning to solve business problems at scale, I'm delighted you got your hands on this book."
—Cassie Kozyrkov, Chief Decision Scientist at Google
"Foundational work about the reality of building machine learning models in production."
—Karolis Urbonas, Head of Machine Learning and Science at Amazon
CCIE Service Provider Version 4 Written and Lab Exam Comprehensive GuideNicholas Russo
The service provider landscape has changed rapidly over the past several years. Networking vendors are continuing to propose new standards, techniques, and procedures for overcoming new challenges while concurrently reducing costs and delivering new services. Cisco has recently updated the CCIE Service Provider track to reflect these changes; this book represents the author's personal journey in achieving that certification.
CCIE SP v4.1 - WorkbookŁukasz Bromirski, Piotr Jablonski, and Nicholas Russo
Are you striving to prepare to and pass CCIE SP lab exam? Take the opportunity and get this workbook! With the attached initial cfg files you will prepare yourself for the CCIE SP exam as well as learn SP technologies applicable to all kinds of today modern networks! This workbook covers blueprint topics and provides challenging examples.
Ansible for DevOpsJeff Geerling
Ansible is a simple, but powerful, server and configuration management tool. Learn to use Ansible effectively, whether you manage one server—or thousands.
The Hundred-Page Machine Learning BookAndriy Burkov
Everything you really need to know in Machine Learning in a hundred pages.
Cloud StrategyGregor Hohpe
“Strategy is the difference between making a wish and making it come true.” A successful migration to the cloud shouldn’t be driven by wishes, but guided by a sound strategy, frameworks, and decision models. This book tells you how—without becoming superficial nor getting lost in technology and product details.
C++ Best PracticesJason Turner
Level up your C++, get the tools working for you, eliminate common problems, and move on to more exciting things!
Thinking with TypesSandy Maguire
This book aims to be the comprehensive manual for type-level programming. It's about getting you from here to there---from a competent Haskell programmer to one who convinces the compiler to do their work for them.
11 BooksThe Quality Software Bundle is for managers, would-be managers, and any of us who find themselves being managed and confused. This comprehensive bundle covers the entire span of software development approaches, from hacking through waterfall, cascade, prototyping, Iterative enhancement, reusable code, off-the-shelf, to Agile teams. The bundle...
The Node.js Bundle
3 BooksThis bundle combines three bestselling Leanpub Node.js books into a package that gives you everything you need to get started with developing Node.js applications at an unbeatable price.
The Tester's Library
8 BooksThe Tester's Library consists of eight five-star books that every software tester should read and re-read. As bound books, this collection would cost over $200. Even as e-books, their price would exceed $80, but in this bundle, their cost is only $49.99. Here are the books, and why they should be in your library: Perfect Software and Other...
11 BooksIn this bundle, you will find 10 different agile books. They are about different aspects of being agile. - finding a job - doing coding dojo's - Retrospectives - Personal kanban - a non-typical coaching book and even a book that gives you an insight in the lives of some agile people.
WTFlop 6M + HU - Beta Bundle
Fifty Quick Ideas
3 BooksGet all three books for the price of two! Fifty Quick Ideas books are full of practical, real-world techniques that you can use to improve teamwork, build better products and build them in a better way.
Growing Agile: Coach's Guide Series
4 BooksThis bundle provides a collection of training and workshop plans for a variety of agile topics. The series is aimed at agile coaches, trainers and ScrumMasters who often find themselves needing to help teams understand agile concepts. Each book in the series provides the plans, slides, handouts and activity instructions to run a number of...
Marionette.js A to Z
Build A Better Backbone App
3 BooksThe best way to learn new development skills is through experience, but that takes time you don't have.Get the best of both worlds with this bundle: you'll learn how to produce modern web applications by learning from experienced developers like Derick Bailey and David Sulc. BackboneJS is one of the favorite tools on the web today, but it...
People Skills—Soft but Difficult
7 BooksPerhaps you've been told that "lack of people skills" has been holding you back. No wonder: you may have had hundreds of hours of technical training, but little or no "people skills" guidance.You've heard it said that people skills are "soft," whereas technical skills are "hard." For you, though, technical skills are "easy," but people skills...