Linked e-resources
Details
Table of Contents
Intro
Table of Contents
About the Author
About the Technical Reviewer
Chapter 1: Introduction
Personal View
The Future by Apple
About This Book
Chapter 2: Organized Mess
Meet "Weathery"
The Weathery Project
Code Organization
Separation of Concerns
Presentation, Business, and Services
It All Starts with Data Flow
The Three-Layer Architecture
Problems to Mini Problems
Stability
Teamwork
Build Time
Redesign Our App Architecture
Take a Paper and Draw a UML
Do This in Collaboration
Relations Between Components
What Side to Start?
Opened and Closed Layers
Define Design Patterns
Define Your Entities
Define Your Interfaces
Summary
Chapter 3: Swift Package to Rescue
In the Meeting Room
Let's Start with Terminology
Module
Library
Framework
Swift Package
Code Location
Dependencies
Platform and System Version
Versioning
Create Our First Package
Create a Package from the Command Line
Xcode 11 and Swift Packages
Package.swift
Swift Tools and PackageDescription
Products and Targets
Naming
What Are We Naming?
Be Consistent
Be Meaningful
Be Unique
Platforms
Dependencies
Working on Our Package
Building
Building from Xcode
Creating a New Package from Xcode
Summary
Chapter 4: Design and Link Our First Package
What Do We Do Next?
Linking the Package Libraries
Think As a Service Provider
Design a Good API
Think About the Developer As a Naïve One
Access Control
Private
fileprivate
Open/Public
Parameters, Return Type, and Properties in Public Access Level
Public Constructor
Access Level in Testing
Scenario-Driven Design
Three Different Ways Produce Three Different Experiences
Inout Parameter
Naming
Clarity
Consistency
Class/Protocol Names
Method Names
Comments
Rendered Documentation
The Basics
Discussion and Summary
Parameters, Returns, and Throws
Code Blocks
More Special Fields
Document Classes, Structs, and Enum
Summary
Chapter 5: All About Dependencies
A Utils Package
Code Coupling
Why Code Coupling Matters?
Types of Coupling
Structural Dependencies
Inheritance
Aggregation
Usage
Fan-Out Similarity
Fan-Out Similarity with Inheritance
Logical Coupling
Dependencies Between Packages
A Version-Based Requirement
Semantic Versioning Standard
Control Our Dependencies' Update
Branch-/Commit-Based Requirement
A Local Dependency
Project's Remote Dependencies
Some Best Practices About Dependencies
Reducing Coupling Level
Dependency Injection
Using Closures
The Responsibility Is on the App
Summary
Chapter 6: And Sharing for All
Sharing Options
Sharing Using a Public Git Repo
There Is No Support for Multipackage Repositories
Versioning
Remember Semantic Versioning Standard?
Table of Contents
About the Author
About the Technical Reviewer
Chapter 1: Introduction
Personal View
The Future by Apple
About This Book
Chapter 2: Organized Mess
Meet "Weathery"
The Weathery Project
Code Organization
Separation of Concerns
Presentation, Business, and Services
It All Starts with Data Flow
The Three-Layer Architecture
Problems to Mini Problems
Stability
Teamwork
Build Time
Redesign Our App Architecture
Take a Paper and Draw a UML
Do This in Collaboration
Relations Between Components
What Side to Start?
Opened and Closed Layers
Define Design Patterns
Define Your Entities
Define Your Interfaces
Summary
Chapter 3: Swift Package to Rescue
In the Meeting Room
Let's Start with Terminology
Module
Library
Framework
Swift Package
Code Location
Dependencies
Platform and System Version
Versioning
Create Our First Package
Create a Package from the Command Line
Xcode 11 and Swift Packages
Package.swift
Swift Tools and PackageDescription
Products and Targets
Naming
What Are We Naming?
Be Consistent
Be Meaningful
Be Unique
Platforms
Dependencies
Working on Our Package
Building
Building from Xcode
Creating a New Package from Xcode
Summary
Chapter 4: Design and Link Our First Package
What Do We Do Next?
Linking the Package Libraries
Think As a Service Provider
Design a Good API
Think About the Developer As a Naïve One
Access Control
Private
fileprivate
Open/Public
Parameters, Return Type, and Properties in Public Access Level
Public Constructor
Access Level in Testing
Scenario-Driven Design
Three Different Ways Produce Three Different Experiences
Inout Parameter
Naming
Clarity
Consistency
Class/Protocol Names
Method Names
Comments
Rendered Documentation
The Basics
Discussion and Summary
Parameters, Returns, and Throws
Code Blocks
More Special Fields
Document Classes, Structs, and Enum
Summary
Chapter 5: All About Dependencies
A Utils Package
Code Coupling
Why Code Coupling Matters?
Types of Coupling
Structural Dependencies
Inheritance
Aggregation
Usage
Fan-Out Similarity
Fan-Out Similarity with Inheritance
Logical Coupling
Dependencies Between Packages
A Version-Based Requirement
Semantic Versioning Standard
Control Our Dependencies' Update
Branch-/Commit-Based Requirement
A Local Dependency
Project's Remote Dependencies
Some Best Practices About Dependencies
Reducing Coupling Level
Dependency Injection
Using Closures
The Responsibility Is on the App
Summary
Chapter 6: And Sharing for All
Sharing Options
Sharing Using a Public Git Repo
There Is No Support for Multipackage Repositories
Versioning
Remember Semantic Versioning Standard?