Skip to content

Latest commit

 

History

History
54 lines (53 loc) · 3.37 KB

README.md

File metadata and controls

54 lines (53 loc) · 3.37 KB

UIPresentationModule

Practiced ui module from essential developer

Learning outcomes in the UI & Presentation module Validating UI design and dev decisions through prototyping Working effectively with designers Improving collaboration and getting fast feedback from clients with prototyping Separating platform-specific and platform-agnostic components in Xcode using Swift frameworks Supporting multiple platforms on Swift frameworks Configuring Xcode Targets and Schemes to build and test all supported platforms on the continuous integration (CI) pipeline Validating UX experiences and exploring solutions through prototyping Introduction to the MVC UI architectural design pattern Test-driving MVC implementations Testing effectively with 3rd-party frameworks Preventing bugs caused by 3rd-party framework’s Inversion of Control and Temporal Coupling Decoupling tests from UI implementation details Inside-Out vs. Outside-In development approaches Efficiently loading images in UITableView cells Efficiently prefetching images when cells are near visible Efficiently canceling image loading requests to avoid excessive data usage Managing multiple views, models, and state Moving state management responsibility to clients with Return Values Identifying the Massive View Controller antipattern Test-driving UI components Testing UIKit components without mocking Creating in-memory UIImage representations for fast and reliable tests Following the Open Closed, Interface Segregation, and Dependency Inversion Principles Distributing the responsibilities of a view controller with other controllers to form a multi-MVC design Creating Composers to separate usage from creation and decoupling components Using the Adapter pattern to enable components with incompatible interfaces to work together seamlessly Improving architectural separation between UI and core components with View Models Creating a reusable cross-platform Presentation layer with MVVM Implementing Stateful and Stateless View Models Using Generics to create reusable components Creating a reusable cross-platform Presentation Layer with MVP Improving architectural separation between UI and core components with Presenters Implementing various MVP solutions Differences between ViewModels in MVVM, MVC, and MVP Implementing the Proxy design pattern Identifying and solving Cyclic Dependencies Dealing with Memory Management in the Composer layer to prevent leaking composition details into components Trade-offs of creating the app layout in storyboards vs. programmatically Dependency Injection and component composition with storyboards Optimizing UITableView performance by reusing cells Localizing strings within various UI design patterns (MVC, MVVM, MVP) NSLocalizedString best practices Creating and managing customer-facing strings in the Presentation Layer (away from Business Logic!) Testing customer-facing strings Decoupling UIKit components (and any other client) from threading details Removing duplication and centralizing threading logic in the composition layer Decorator pattern: Extending behavior of individual objects without changing its implementation (Liskov Substitution + Open/Closed Principles) Decorator pattern: Implementing Cross-Cutting concerns (Single Responsibility Principle) Extracting cross-platform components from a platform-specific module Test-driven approach to testing components that have been implemented already (test-after)