Overview
Explore functional architecture and its inherent advantages in a conference talk that contrasts object-oriented and functional programming paradigms. Discover how functional programming naturally leads to best practices that require deliberate effort in object-oriented design. Learn about pure functions, port and adapters, encapsulation, domain-driven design, and how these concepts align with functional programming principles. Examine a restaurant reservation example to understand the benefits of pure functions and concentric circles in system design. Delve into testability, discussing how functional programming mitigates test-induced damage and promotes easier unit testing through higher-order functions and natural isolation. Gain insights into writing pure functions and how they contribute to more maintainable and robust software architectures.
Syllabus
Intro
Nonfunctional requirements
Preface
Port and adapters
Pure functions
Restaurant reservation example
impure function
concentric circles
encapsulation
domaindriven design
objectoriented design
functional programming
user
module
Haskell
Testability
Testinduced damage
Higherorder functions
Unit tests
Isolation
Pure function
Unit testing
Isolation is important
Opie is the problem
Isolation vs testdriven development
Writing pure functions
Taught by
NDC Conferences