S02E15: Migrating the Quiz ResultsPresenter guided by tests | Professional iOS Engineering Series

S02E15: Migrating the Quiz ResultsPresenter guided by tests | Professional iOS Engineering Series

In this episode, you'll see how to move deprecated dependencies from high-level to lower-level modules as we finish refactoring the `ResultsPresenter`.

Read More

S02E14: Changing struct initializers without breaking clients | Professional iOS Engineering Series

S02E14: Changing struct initializers without breaking clients | Professional iOS Engineering Series

In this episode, you'll see how to change a Swift struct memberwise initializer while maintaining backward compatibility as we refactor the Quiz ResultsPresenter.

Read More

S02E13: Calculating score with zip, reduce, and generics in Swift | Professional iOS Engineering Series

S02E13: Calculating score with zip, reduce, and generics in Swift | Professional iOS Engineering Series

In this episode, you'll see how to replace a procedural scoring implementation that relies on a temporary mutable variable with a more functional approach using Swift's `zip` and `reduce` functions (no mutation!). 

Read More

S02E12: Test-driving a standalone scoring function in Swift | Professional iOS Engineering Series

S02E12: Test-driving a standalone scoring function in Swift | Professional iOS Engineering Series

In this episode, you'll see how to test-drive a basic Quiz scoring function from scratch. By extracting the scoring functionality from the QuizEngine, the framework's clients can now create custom scoring implementations tailored to their business logic.

Read More

S02E11: Cleaning up Swift code backed by tests | Professional iOS Engineering Series

S02E11: Cleaning up Swift code backed by tests | Professional iOS Engineering Series

In this episode, you'll see the pay off of refactoring Swift codebases in tiny steps backed by tests as we safely clean up the codebase by removing duplication and unused APIs without breaking clients or existing code.

Read More

S02E10: Finding and fixing bugs with a Swift test spy | Professional iOS Engineering Series

S02E10: Finding and fixing bugs with a Swift test spy | Professional iOS Engineering Series

In this episode, you'll see how a test spy can help you increase test coverage by capturing all received values as we add more tests and fix a bug in the Quiz framework.

Read More

S02E09: Test-driven approach to moving code between components | Professional iOS Engineering Series

S02E09: Test-driven approach to moving code between components | Professional iOS Engineering Series

In this episode, you'll see a test-driven approach to moving code between components as we move the scoring logic from the new Quiz APIs to the deprecated Game APIs.

Read More

S02E08: Safely changing Swift code with tests | Professional iOS Engineering Series

S02E08: Safely changing Swift code with tests | Professional iOS Engineering Series

In this episode, you'll see how to safely change existing Swift code covered by unit tests.

Read More

S02E07: Refactoring protocols guided by tests and the compiler | Professional iOS Engineering Series

S02E07: Refactoring protocols guided by tests and the compiler | Professional iOS Engineering Series

In this episode, you’ll learn how to refactor protocol methods guided by tests and the compiler as we gradually migrate the QuizDelegate to the new APIs.

Read More

S02E06: Design spiking DataSource/Delegate APIs | Professional iOS Engineering Series

S02E06: Design spiking DataSource/Delegate APIs | Professional iOS Engineering Series

In this episode, we spike new design ideas to separate the responsibilities of (1) building a Quiz result, and (2) delegating the result (Single Responsibility Principle).

Read More