-
Урок 1.
00:25:58
1. Are Singletons and Global Instances Damaging your System Design and Testability
-
Урок 2.
00:17:51
2. Intro to Dependency Diagrams and Composition
-
Урок 3.
00:15:26
3. Intro to Modular Design
-
Урок 4.
00:22:12
4. BDD, TDD, Use Cases, Architecture and Modular Design
-
Урок 5.
00:10:48
5. Effectively Developing Swift Apps Before the Backend(Design) Is Ready
-
Урок 6.
00:23:52
6. From Singletons and Globals to Proper Dependency Injection
-
Урок 7.
00:07:33
7. Asserting a Captured Value Is Not Enough + Cross-Module Access Control
-
Урок 8.
00:21:57
8. Handling Errors + Stubbing vs. Spying + Eliminating Invalid Paths
-
Урок 9.
00:40:01
9. A Classicist TDD Approach (No Mocking) to Mapping JSON with Decodable + Domain-Specific Models
-
Урок 10.
00:16:13
10. Automating Memory Leak Detection + Preventing a (Way Too Common) Async Bug
-
Урок 11.
00:13:24
11. Conforming to Feature Abstractions While Maintaining System Modularity + Keeping Test Details Out of Production With Enum Pattern Matching and Async Expectations
-
Урок 12.
00:31:43
12. Four Approaches to Test(-Drive) Network Requests. End-to-End, Subclass & Protocol-Based Mocking, and URLProtocol Stubbing
-
Урок 13.
00:41:16
13. Speeding up Development by Reducing Debugging Time, Minimizing Risk & Maximizing Learning, and Decoupling Tests From Implementation Details
-
Урок 14.
00:22:14
14. Randomizing & Parallelizing Tests, Code Coverage, Testing in Integration with the Backend, and Automating a Continuous Integration (CI) Pipeline
-
Урок 15.
00:10:18
15. Identifying, Debugging, and Solving Data Races with the Thread Sanitizer
-
Урок 16.
00:10:25
16. URLCache as a Persistence Alternative & Solving The Infamous “But it works on my machine!” Caching Problem
-
Урок 17.
00:10:40
17. Clarifying Requirements, Enhancing Cross-Team Domain Knowledge, and Iterative vs. Big Upfront Design
-
Урок 18.
00:30:58
18. Decoupling Use-Case Business Logic From Framework Details + Controlling Time + Multi-Method Abstractions Following The Interface Segregation and Single Responsibility Principles
-
Урок 19.
00:11:42
19. Proper Memory-Management of Captured References Within Deeply Nested Closures + Identifying Highly-Coupled Modules
-
Урок 20.
00:20:12
20. Visualizing and Solving High-Coupling Issues by Decentralizing Components Using Data Transfer Model Representations
-
Урок 21.
00:28:21
21. Performing Calendrical Calculations Correctly, Dealing With Coincidental Duplication While Respecting the DRY Principle, Decoupling Tests From Implementation With Tiny DSLs, and Test Triangulation to I
-
Урок 22.
00:08:39
22. Test-driving Cache Invalidation + Identifying Complex (Bloated) Functionality With The Command–Query Separation Principle
-
Урок 23.
00:19:58
23. Separating Queries & Side-effects for Simplicity and Reusability, Choosing Between Enum Switching Strategies, and Differentiating App-Specific from App-Agnostic Logic
-
Урок 24.
00:20:31
24. Separating App-specific, App-agnostic & Framework logic, Entities vs. Value Objects, Establishing Single Sources of Truth, and Designing Side-effect-free (Deterministic) Domain Models with Functional C
-
Урок 25.
00:12:46
25. Dependency Inversion Anatomy (High-level Boundary Low-level), Defining Inbox Checklists and Contract Specs to Improve Collaboration and Avoid Side-effect Bugs in Multithreaded Environments
-
Урок 26.
00:29:33
26. Persisting (Retrieving) Models with Codable+FileSystem, Test-driving in Integration with Real Frameworks Instead of Mocks & Measuring Test Times Overhead with `xcodebuild`
-
Урок 27.
00:18:33
27. Deleting Models and Handling Errors with Codable+FileSystem, Making Async Code Look Sync in Tests to Eliminate Arrow Anti-Pattern, and More Essential Test Guidelines to Improve Code Quality and Team Co
-
Урок 28.
00:11:36
28. Designing and Testing Thread-safe Components with DispatchQueue, Serial vs. Concurrent Queues, Thread-safe Value Types, and Avoiding Race Conditions
-
Урок 29.
00:08:17
29. Protocol vs Class Inheritance, Composite Reuse Principle, and Extracting Reusable Test Specs with Protocol Inheritance, Extensions and Composition
-
Урок 30.
00:05:42
30. Core Data Overview, Implementation, Concurrency Model, Trade-offs, Modeling & Testing Techniques, and Implementing Reusable Protocol Specs
-
Урок 31.
00:19:45
31. Finishing the Cache Implementation with Business Logic + Core Data Integration Tests — Unit vs. Integration ProsCons, Performance, Complexity & How to Achieve The ideal Testing Pyramid Distribution
-
Урок 32.
00:16:01
32. Improving Model Composability With Swift's Standard Result and Optional Types, Map, Functors, and Powerful Refactorings Backed by Tests and Types
-
Урок 33.
00:16:04
33. Gathering Fast Feedback and Validating UI Design and Dev Decisions Through Realistic App Prototypes
-
Урок 34.
00:09:11
34. Supporting Multiple Platforms with Swift Frameworks While Separating Platform-specific Components to Facilitate Loose Coupling and Speed up Development
-
Урок 35.
00:19:42
35. Apple MVC, Test-driving UIViewControllers, Dealing with UIKit's Inversion of Control & Temporal Coupling, and Decoupling Tests from UI Implementation Details
-
Урок 36.
00:35:33
36. Effectively Test-driving MVC UI with Multiple ViewsModelsState, Efficiently LoadingPrefetchingCancelling Image Requests, Inside-Out vs. Outside-In Development, and Identifying the Massive View Controll
-
Урок 37.
00:22:07
37. Refactoring Massive View Controllers Into Multiple Tiny MVCs + Using Composers & Adapters to Reduce Coupling and Eliminate Redundant Dependencies
-
Урок 38.
00:26:41
38. MVVM Reducing Boilerplate, Shifting Reusable Presentation Logic from Controllers into Cross-Platform (Stateful & Stateless) ViewModels, and Decoupling Presentation from UI Frameworks with Swift Generic
-
Урок 39.
00:31:28
39. MVP Creating a Reusable and Cross-Platform Presentation Layer, Implementing Service Adapters, and Solving Cyclic Dependencies & Memory Management issues with the Proxy Pattern
-
Урок 40.
00:23:46
40. Storyboard vs. Code. Layout, DI and Composition, Identifying the Constrained Construction DI Anti-pattern, and Optimizing Performance by Reusing Cells
-
Урок 41.
00:17:37
41. Creating, Localizing, and Testing Customer Facing Strings in the Presentation Layer + NSLocalizedString Best Practices
-
Урок 42.
00:14:53
42. Decorator Pattern. Decoupling UIKit Components From Threading Details, Removing Duplication, and Implementing Cross-Cutting Concerns In a Clean & SOLID Way
-
Урок 43.
00:27:55
43. Test-driven Approach to Effectively Dealing with Legacy Code (Code With No Tests!) + Extracting Cross-platform Components From a Platform-specific Module
-
Урок 44.
00:14:10
44. Feed Image Data Loading and Caching with URLSession (CoreData) + Composing Modules Into a Running iOS Application with Xcode Workspaces
-
Урок 45.
00:27:52
45. Composite Pattern. Implementing a Flexible & Composable Strategy for Loading Data with Fallback Logic
-
Урок 46.
00:27:03
46. Interception. An Effective, Modular and Composable Way of Injecting Behavior and Side-effects in the App Composition
-
Урок 47.
00:32:21
47. Validating Acceptance Criteria with High-Level UI Tests, Controlling Network and App State in UI tests with Launch Arguments and Conditional Compilation Directives
-
Урок 48.
00:26:51
48. Validating Acceptance Criteria with Fast Integration Tests, Composition Root, and Simulating App Launch & State Transitions
-
Урок 49.
00:23:21
49. Validating the UI with Snapshot Tests + Dark Mode Support
-
Урок 50.
00:07:25
50. Preventing a Crash when Invalidating Work Based on UITableViewDelegate events
-
Урок 51.
00:24:02
51. Organizing Modular Codebases with Horizontal and Vertical Slicing
-
Урок 52.
00:18:43
52. Continuous Delivery and Deployment. Automating the App Deploy to App Store Connect
-
Урок 53.
00:25:54
53. From Design Patterns to Universal Abstractions Using the Combine Framework
-
Урок 54.
02:19:52
54. #001 - [Image Comments API] From Dependency Injection to Dependency Rejection
-
Урок 55.
02:31:16
55. #002 - [Image Comments Presentation] Reusable Presentation Logic
-
Урок 56.
00:51:55
56. #003 - [Image Comments UI] Reusable UI Components, Diffable Data Sources, Dynamic Type, Snapshot Testing. Part 1 - Adding a feature-specific UI without duplication
-
Урок 57.
00:41:58
57. Part 2 - Decoupling feature-specific UI from the Shared module
-
Урок 58.
01:10:16
58. Part 3 - Creating UI Programmatically, Memory Graph Debugger, Dynamic Type, and Diffable Data Sources
-
Урок 59.
01:02:47
59. #004 - [Image Comments Composition] Navigation and Feature Composition. Part 1 - Composing the Comments feature layers
-
Урок 60.
01:01:45
60. Part 2 - Handling selection and navigation in the Composition Root
-
Урок 61.
02:48:38
61. #005 - Keyset Pagination with Caching Strategy
-
Урок 62.
01:40:55
62. #006 - Logging, Profiling, and Optimizing Infrastructure Services
-
Урок 63.
01:41:27
63. #007 - Async Injection. Decoupling the Domain from Infra Details. Part 1 - Async Injection
-
Урок 64.
00:24:28
64. Part 2 - Non-Blocking Async Injection
But why does the quality of the added videos is so bad ?
can you update us on the current status? Are you still waiting for access?
Sometimes they just drop an email like: “Pay now, we’re starting in 3 days.” No warning, no prep time.
Thing is, we can’t drop everything and come up with that kind of money last-minute. We've got other orders, other people waiting.
So, if you really want access to this course - let’s do a crowdfunding round. Join in and support it. Together it’s possible.