Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай iOS Lead Essentials, а также все другие курсы, прямо сейчас!
Премиум
  • Урок 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